Мы разрабатываем сервер аутентификации/идентификации на основе сервера .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
Распространение OIDC сторонней аутентификации в приложении клиента, в OpenIddict ⇐ C#
Место общения программистов C#
1749862014
Anonymous
Мы разрабатываем сервер аутентификации/идентификации на основе сервера .net/c# & openiddict. Мы делегируем аутентификацию на сторонний сервер (используя клиент OpenIddict), в настоящее время только один поставщик, но ожидая добавления других. «Счастливый путь» вхождения работает нормально: пользователь попадает на нашу конечную точку аутентификации, спрашивает, какую 3-ю, которая они хотят, перенаправляется на этот сайт, выполняет аутентификацию и перенаправляется обратно на наш сервер, где мы приносим токенс и перенаправляем их обратно на их правильный redirect_uri с кодом, чтобы вернуть к нам. не удается и перенаправляет на наш перенаправление URI с ошибкой - https://id-server.example.com/identity/login/callback/{provider}?state={whatever}&error=access_denied&error_desciption=... - затем трубопровод 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... )
Подробнее здесь: [url]https://stackoverflow.com/questions/79665171/propagating-oidc-third-party-authentication-failure-to-client-application-in-op[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия