Почему мои контроллеры администратора вызывают OnRemoteFailure в ConfigurationOpenIdConnectOptions при использовании насC#

Место общения программистов C#
Ответить
Anonymous
 Почему мои контроллеры администратора вызывают OnRemoteFailure в ConfigurationOpenIdConnectOptions при использовании нас

Сообщение Anonymous »

Я настраиваю проверку подлинности и авторизацию в приложении ASP.NET Core, используя OpenIdConnect и Microsoft Identity. Цель состоит в том, чтобы интерфейсные контроллеры моего сайта использовали OpenIdConnect (IdentityServer4), а контроллеры администратора — AzureAd. Вот краткое изложение моей настройки:
В 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();
});
});
Это событие также настроено в ConfigurationOpenIdConnectOptions:

Код: Выделить всё

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")]
ConfigureAzureAdConnectOptions содержит только базовую информацию как таковую:

Код: Выделить всё

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");
Проблема, с которой я столкнулся, заключается в том, что при доступе к любому из моих контроллеров администратора событие OnRemoteFailure запускается из класса ConfigurationOpenIdConnectOptions, что вызывает перенаправление на домашнюю страницу.
Я ожидаю, что это событие сработает только при сбоях, связанных с 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»