我正在构建一个ASP.NET Core Razor网站(2.2版)。网站基本上有两个区域:网站所有者的管理区域和面向客户的区域。目录结构的所有面向客户的页面都位于“页面”文件夹下,所有管理页面都位于名为“ Admin”的子文件夹下。
我想对“ Admin”文件夹下的所有页面使用工作或学校帐户身份验证(单个租户)。这将允许管理员使用其Azure AD帐户登录以管理网站。对于所有其他页面,我想对本地数据存储使用“个人用户帐户”身份验证。
我目前可以使用Azure AD身份验证,但是是否可以基于目录指定两种不同的身份验证机制,“管理员”下的页面将使用Azure AD,而所有其他页面将使用“个人帐户”?
在类似的帖子中,其他人已经给出了答案,但这已经超过4年了,并且没有使用ASP.NET Core,因此请不要通过指向该文章来结束本文章。 (Is it possible to have both Azure AD and Individual Account authentication in one ASP.NET MVC application?)
当前,我只是准备好AzureAD代码。
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
services.AddMvc(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);