Я бью это следующей комбинацией:
1) Режим инкогнито в браузере (Chrome)
2) Приложение находится за шлюзом приложений Azure (без воспроизведения, если это не так) Сходство на основе файлов cookie отключено (по умолчанию); при включении кажется, что репро происходит чаще.
Код довольно простой ванильный OIDC authN + куки.
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddAzureAd(options => {
Configuration.Bind("AzureAd", options);
})
.AddCookie(p => p.SlidingExpiration = true);
Я пересылаю заголовок X-Forwarded-Proto в промежуточное программное обеспечение аутентификации, как рекомендовано, поэтому redirect_uri использует правильную схему протокола.
ОБРАЩЕНИЕ В КОДЕКСЕ
Я попытался обработать событие OnRemoteFailure () и перенаправить на «/ Home / AuthRedirect», которая является дополнительной страницей, которая ждет 20 секунд, а затем перенаправить на «/» (домашняя страница ). Кажется, иногда работает, но не всегда. У меня нет идей.
* 1017 Временное решение *
1) Пользователи могут снова зайти на домашнюю страницу и нажимать F5, пока это не сработает. Кажется, что каждый F5 заставляет их двигаться на шаг впереди, и как только печенья OpenID заполняются, все остальное (у меня больше аутентификации после завершения openid, через adal.js для использования AJAX).
2) Обходите шлюз приложения и используйте DNS-имя кластера фабрики прямого обслуживания (недопустимо, поскольку это http).
информация
System.Exception: корреляция не удалась.
в Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler`1.d__12.MoveNext ()
--- Конец стека трассировки от предыдущего местоположения, где было сгенерировано исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача)
в Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.d__6.MoveNext ()
--- Конец стека трассировки от предыдущего местоположения, где было сгенерировано исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача)
в Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext ()
--- Конец стека трассировки от предыдущего местоположения, где было сгенерировано исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача)
в Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext ()
--- Конец стека трассировки от предыдущего местоположения, где было сгенерировано исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача)
в Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.d__7.MoveNext ()
![image](https://user-images.githubusercontent.com/9466367/39440060-907a5506-4c5e-11e8-8208-3cfa7dc9847c.png)