Я использую гибридный поток аутентификации с 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. State property not found», а затем происходит сбой (согласно приведенной ниже ошибке github) как «Ошибка удаленной аутентификации: сбой корреляции .. < / strong> "
https://github.com/aspnet/AspNetCore/issues/7501
Так что я делаю не так. Поскольку предложение, указанное в вышеупомянутой ошибке, невозможно, потому что у него есть некоторые значения, которых у меня нет в этом случае.
что мне не хватает (или что я должен сделать, чтобы завершить этот поток)?