Я использую гибридный поток аутентификации с OIDC.
options.Events.OnRedirectToIdentityProvider = redirectContext =>
{
if (redirectContext.Request.Path.StartsWithSegments("/api"))
{
if (redirectContext.Response.StatusCode == (int)HttpStatusCode.OK)
{
AuthenticationProperties properties = new AuthenticationProperties();
properties.RedirectUri = redirectContext.ProtocolMessage.RedirectUri;
redirectContext.ProtocolMessage.State = options.StateDataFormat.Protect(properties);
redirectContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
redirectContext.Response.Headers["Location"] = redirectContext.ProtocolMessage.CreateAuthenticationRequestUrl();
}
redirectContext.HandleResponse();
}
return Task.CompletedTask;
};
Как и в приведенном выше коде, я вручную установил свойство "состояние" (которое было предложено основной группой ASP.Net, но не совсем так.см. ссылку на выпуск github), но она не работает.
При обратном вызове выдает предупреждение как ". Свойство AspNetCore.Correlation. Состояние не найдено" , а затем происходит сбой (согласно приведенной ниже ошибке github) как " Ошибка удаленной аутентификации:Корреляция не удалась .."
https://github.com/aspnet/AspNetCore/issues/7501
Так что же я делаю не так?Потому что предложение, данное в приведенной выше ошибке, невозможно, потому что оно имеет некоторые значения, которых у меня нет в этом событии.
что я пропускаю (или должен сделать, чтобы завершить этот поток)?