Код: Выделить всё
https://id-server.example.com/identity/login/callback/{provider}?state={whatever}&error=access_denied&error_desciption=...
Я добавил обработчик ошибки в опции клиента OpenIdct:
Код: Выделить всё
options.AddEventHandler(builder =>
{
builder.UseInlineHandler(context =>
{
if (context.RequestUri?.AbsolutePath.StartsWith("/identity/login/callback") ?? false)
{
// Proceed to the Controller handler logic:
context.SkipRequest();
}
return default;
});
});
< /code>
, что приводит к тому, что поток выполнения пропускает ответ на ошибку OpenIddict и управляющий потоком через наш обработчик обратного вызова как обычно. Нам нужно определить соответствующий запрос клиента и перенаправить на правильный redirect_uri
Код: Выделить всё
[HttpGet("~/identity/login/callback/{provider}"), HttpPost("~/identity/login/callback/{provider}"), IgnoreAntiforgeryToken]
public async Task LogInCallback()
{
// Retrieve the authorization data validated by OpenIddict as part of the callback handling.
var result = await HttpContext.AuthenticateAsync(OpenIddictClientAspNetCoreDefaults.AuthenticationScheme);
if (!result.Succeeded && result... )
- /identity/connect>
- /identity/adurize>
/identity/aduretize> - /identity/account/login
Подробнее здесь: https://stackoverflow.com/questions/796 ... tion-in-op