У меня есть приложение ASP.NET Core, которое должно решить, следует ли возвращать информацию из конечных точек контроллера на основе запрашиваемых групп Active Directory клиента.Я попытался реализовать пользовательскую авторизацию следующим образом:
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddOptions();
services.AddSingleton(Configuration);
services.AddSignalR();
services.AddAuthorization(options=> {
options.AddPolicy("RequiredADGroupName", policy=>policy.Requirements.Add(new ActiveDirectoryRequirement("RequiredADGroupName")));
});
}
ActiveDirectoryRequirement.cs
public class ActiveDirectoryRequirement: IAuthorizationRequirement
{
public string ActiveDirectoryGroupName { get; set; }
public ActiveDirectoryRequirement(string groupName)
{
ActiveDirectoryGroupName = groupName;
}
}
ActiveDirectoryHandler.cs
public class ActiveDirectoryHandler: AuthorizationHandler<ActiveDirectoryRequirement>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ActiveDirectoryRequirement requirement)
{
//authorization logic
}
}
это следующий пример того, как я мог бы использовать это разрешение.HomeController.cs
public class HomeController : Controller
{
[Authorize(Policy = "RequiredADGroupName")]
public IActionResult Index()
{
return View();
}
}
Когда я запускаю проект, я получаю следующую ошибку:
InvalidOperationException: No authenticationScheme was specified, and there was no DefaultForbidScheme found.
что я делаю не так?