Я пытаюсь интегрировать Azure AD для аутентификации доступа к веб-приложению, разработанному в ASP .NET Core и размещенному в Azure.
Я добавил TenantId, ClientId и Domain в мой appsettings.json.Я также настроил промежуточное программное обеспечение при запуске следующим образом:
services.AddAuthentication(sharedOptions => {
sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddAzureAd(options => Configuration.Bind("AzureAd", options))
.AddCookie()
.AddJwtBearer(cfg =>
{
cfg.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters()
{
ValidIssuer = Configuration["Tokens:Issuer"],
ValidAudience = Configuration["Tokens:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Tokens:Key"]))
};
});
Все веб-приложение - HTTPS.
Текущее поведение выглядит следующим образом: 1) Перейти на домашнюю страницу сайта.
2) Ресурс доступа, для которого требуется авторизация
3) Отображается экран входа в систему Azure AD и информация для входа принимается
4) Страница переходит в белый цвет застревает вЦикл перенаправления между моим веб-приложением и сайтом входа в систему MS
Трассировка запроса
Я видел в другом вопросе о том, что проблема пользователя была связана с отправкой файлов cookie по HTTP против HTTPS,Однако, похоже, что это не так.Я попытался настроить промежуточное программное обеспечение следующим образом (только для целей тестирования), но проблема остается:
services.AddAuthentication(sharedOptions => {
sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddAzureAd(options => Configuration.Bind("AzureAd", options))
.AddCookie(options => {
options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None;
})
.AddJwtBearer(cfg =>
{
cfg.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters()
{
ValidIssuer = Configuration["Tokens:Issuer"],
ValidAudience = Configuration["Tokens:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Tokens:Key"]))
};
});