在ASP.NET Core 2中,有时会发生AD组无法映射到安全角色的情况。这可能是由于配置错误或代码问题引起的。以下是一种可能的解决方法:
services.AddAuthentication
和services.AddAuthorization
方法,并在Configure
方法中使用了app.UseAuthentication
和app.UseAuthorization
。// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
// 配置身份验证
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options =>
{
// 配置OpenID Connect
});
// 配置授权
services.AddAuthorization(options =>
{
options.AddPolicy("Admin", policy => policy.RequireRole("Admin"));
});
// 其他服务配置
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 其他中间件配置
app.UseAuthentication();
app.UseAuthorization();
// 其他配置
}
ConfigureServices
方法中使用services.Configure
来配置角色和组的映射。// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
// 其他服务配置
services.Configure(options =>
{
options.ValidationInterval = TimeSpan.FromMinutes(10);
options.RoleClaimType = "roles";
options.UserIdentifierClaimType = "sub";
});
// 其他服务配置
}
Authorize
属性来限制访问需要特定角色的操作。// HomeController.cs
[Authorize(Roles = "Admin")]
public IActionResult AdminAction()
{
// 只有具有"Admin"角色的用户才能访问该操作
return View();
}
请注意,这只是一种可能的解决方法,具体取决于你的应用程序配置和要求。你可能需要根据自己的情况进行调整和修改。