Получение утверждения «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.