Как исправить исключение «Ошибка корреляции» при использовании Microsoft.Identity.Web вместе с IdentityServer4?C#

Место общения программистов C#
Ответить
Anonymous
 Как исправить исключение «Ошибка корреляции» при использовании Microsoft.Identity.Web вместе с IdentityServer4?

Сообщение Anonymous »

Пытаюсь использовать решение Microsoft.Identity.Web для подключения к внешнему поставщику в приложении Asp.net Core.
Я подключил его, используя следующий код 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
Ответить

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

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

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

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

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