Я подключил его, используя следующий код C#:
Код: Выделить всё
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme).AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));
Однако, когда я вхожу в систему, используя текущего поставщика, я получаю исключение
System.Exception: «При обработке удаленного входа произошла ошибка».
InnerException.
Исключение: не удалось выполнить корреляцию.
В ходе исследования я обнаружил, что это проблема «корреляционного файла cookie» (означает, что поставщик не находит файлы cookie, с которыми можно «коррелировать»). Как я проверил,
Request.Cookie.Count == 0
но браузер отправляет .AspNetCore Файлы cookie .Correlation и .AspNetCore.OpenIdConnect.Nonce со значением «N».
Настройка конфигурации файлов cookie приложения:
Код: Выделить всё
services.ConfigureApplicationCookie(config =>
{
config.Cookie.SameSite = SameSiteMode.Strict;
});
services.ConfigureExternalCookie(options =>
{
options.Cookie.Name = "Identity.Application";
options.Cookie.SameSite = SameSiteMode.Strict;
});
Код: Выделить всё
app.UseCookiePolicy(new CookiePolicyOptions()
{
MinimumSameSitePolicy = Microsoft.AspNetCore.Http.SameSiteMode.Lax,
HttpOnly = HttpOnlyPolicy.None
});
UPD: Настройка файлов cookie добавлена в связи с использованием и настройкой IdentityServer4. Как я узнал, Microsoft.Identity.Web добавляет собственную схему файлов cookie, а не использует схему по умолчанию. Таким образом, корреляционный файл cookie не пройдет, поскольку используется другая схема файлов cookie (Request.Cookies.Length = 0). Итак, те остаются в конфликте. Тем не менее, этот вопрос должен оставаться открытым, возможно, будет какое-то обновление, которое исправит эту проблему, или мои выводы неверны.
Подробнее здесь: https://stackoverflow.com/questions/790 ... ty-web-alo
Мобильная версия