Получение утверждения «sid» от IdP EndSessionEndpoint в IdentityServer 5?

У меня есть рабочий IdP, использующий промежуточное ПО Duende IdentityServer 5.0.4.

В веб-приложении у меня есть ссылка для выхода, которая выполняет перенаправление 302 на EndSessionEndpoint, полученное через клиент обнаружения.

На странице подтверждения выхода IdP доступны следующие утверждения пользователя: sub, amr, name, idp и authtime. Требование "sid" недоступно.

Как я могу указать EndSessionEndpoint требовать утверждение sid? Есть ли способ прочитать утверждение sid текущего пользователя из файла cookie idsrv?

Любые советы будут оценены. В настоящее время я явно передаю утверждение sid через строку запроса для перенаправления 302 в качестве временного решения, но я хочу удалить это как можно скорее.

Спасибо!

PS - Я знаю о параметре id_token_hint, но хочу, чтобы мои пользователи получали запрос «вы уверены, что хотите выйти?» вопрос.

2 ответа

Есть несколько способов получить sid:

  • Вы можете передать его cookie и использовать промежуточное ПО для перезаписи заголовка.
  • Вы можете вызвать конечную точку пользователя из внешнего интерфейса, чтобы получить ее
  • Вы можете поместить это в заявку на токен и прочитать это в контексте на стороне вашего сервера.
  • вы также можете использовать свой подход ...

Например, я использую письмо sid co утверждает токен и автоматически считывает его из контекстных данных, но для этого вам нужно AddJwt.. указать options.MapInboundClaims = true; чтобы сопоставить эти данные с сетевым основным контекстом http.

Кстати, на этом семинаре есть реальный пример:https://github.com/damikun/trouble-training

Оказывается, оценка значения LogoutId с помощью GetLogoutContextAsync() из IIdentityServerInteractionService предоставляет значение SessionId.

Другие вопросы по тегам