Распространение OIDC сторонней аутентификации в приложении клиента, в OpenIddictC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Распространение OIDC сторонней аутентификации в приложении клиента, в OpenIddict

Сообщение Anonymous »

Мы разрабатываем сервер аутентификации/идентификации на основе сервера .net/c# & openiddict. Мы делегируем аутентификацию на сторонний сервер (используя клиент OpenIddict), в настоящее время только один поставщик, но ожидая добавления других. «Счастливый путь» вхождения работает нормально: пользователь попадает на нашу конечную точку аутентификации, спрашивает, какую 3-ю, которая они хотят, перенаправляется на этот сайт, выполняет аутентификацию и перенаправляется обратно на наш сервер, где мы приносим токенс и перенаправляем их обратно на их правильный redirect_uri с кодом, чтобы вернуть к нам. не удается и перенаправляет на наш перенаправление URI с ошибкой - https://id-server.example.com/identity/ ... esciption=... - затем трубопровод OpenIddict возвращает ошибку 400 BadRequest. Вместо этого мы хотели бы завершить поток обратно к приложению клиентского приложения redirect_uri с соответствующим образом преобразованной ошибкой (error = "access_denied", error_description = " Аутентификация не удалась").
Я добавил обработчик ошибки в варианты клиента 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... )


Подробнее здесь: https://stackoverflow.com/questions/796 ... tion-in-op
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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