В Startup.cs я настроил аутентификацию и авторизацию следующим образом:
Код: Выделить всё
services.AddSingleton
{
options.DefaultScheme = "IS4Cookies";
options.DefaultChallengeScheme = "SigmaSSO";
});
authBuilder.AddCookie("IS4Cookies"); // Add a cookie handler
authBuilder.AddOpenIdConnect("SigmaSSO", null);
authBuilder.AddMicrosoftIdentityWebApp(Configuration, "AzureAd", "EntraIdOIDC", "EntraId", true);
services.AddAuthorization(options =>
{
options.AddPolicy("AdminSection", policy =>
{
policy.AddAuthenticationSchemes("EntraIdOIDC");
policy.RequireAuthenticatedUser();
policy.RequireRole(new List{"PlusAdminUser"});
});
options.AddPolicy("FrontEnd", policy =>
{
policy.AddAuthenticationSchemes("SigmaSSO");
policy.RequireAuthenticatedUser();
});
});
Код: Выделить всё
options.Events = new OpenIdConnectEvents()
{
OnRemoteFailure = ctx =>
{
ctx.HandleResponse();
ctx.Response.Redirect("/");
return Task.FromResult(0);
}
};
Контроллеры администратора:
Код: Выделить всё
[Area("Admin")]
[Authorize(Policy = "AdminSection")]
Код: Выделить всё
[Area("Admin")]
[Authorize(Policy = "FrontEnd")]
Код: Выделить всё
options.Instance = "https://login.microsoftonline.com/";
options.Domain = "azure-domain-here";
options.TenantId = "someguid";
options.ClientId = "some-other-guid";
options.CallbackPath = "/signin-oidc";
options.SignInScheme = "AzureCookies";
options.Scope.Add("openid");
Я ожидаю, что это событие сработает только при сбоях, связанных с OpenID Connect, но это происходит постоянно при доступе к административным маршрутам.
Почему мои контроллеры администратора вызывают событие OnRemoteFailure из ConfigurationOpenIdConnectOptions? Как я могу предотвратить такое поведение и гарантировать, что оно сработает только в случае законных сбоев OpenID Connect?
Дополнительная информация:
- Я я использую ASP.NET Core 8.0.
- Политика «AdminSection» настроена
на использование схемы EntraIdOIDC, которая, по моему мнению, должна сопоставляться с аутентификацией Azure AD
. - В политике «FrontEnd» используется схема SigmaSSO OpenID
Connect.
Подробнее здесь: https://stackoverflow.com/questions/790 ... connectopt
Мобильная версия