Спецификации: RP-Initiated Logout 1.0, Front-Channel Logout 1.0, Back-Channel Logout 1.0
Эти три спецификации позволяют relying party завершить сессию пользователя у OpenID Provider, а провайдеру — известить остальных клиентов этой сессии. Versola обслуживает их в auth по адресу /logout, а edge принимает оба вида уведомлений.
Статус
Реализован. Отмечено пунктов: 16 из 18.
RP-Initiated Logout
-
GET /logoutиPOST /logout;end_session_endpointесть в документе discovery по умолчанию -
id_token_hintопределяет сессию; просроченный ID token принимается - Запрос с cookie сессии и без hint показывает страницу подтверждения, защищённую CSRF-токеном
- Hint, не совпадающий с сессией из cookie, никого не разлогинивает
-
post_logout_redirect_uriдолжен точно совпадать с одним из зарегистрированных для тенанта и отбрасывается, если нет сессии или hint, по которым его можно проверить -
stateвозвращается в redirect после logout -
ui_localesвыбирает язык страницы подтверждения -
logout_hint— не реализован
Front-Channel Logout
-
frontchannel_logout_uriрегистрируется для клиента; страница logout загружает его в iframe - К URI добавляются
issиsid -
frontchannel_logout_supportedиfrontchannel_logout_session_supportedесть в документе discovery по умолчанию - Учёт
frontchannel_logout_session_required: false— параметры сессии отправляются всегда
Back-Channel Logout
-
backchannel_logout_uriрегистрируется для клиента; logout token отправляется какlogout_token - Logout token с
iss,aud,iat,exp,jti,sub,sidи событиемhttp://schemas.openid.net/event/backchannel-logout, подписан ключом тенанта - Клиенты с общим endpoint получают одну доставку, а все их идентификаторы указаны в
aud - Доставка идёт через outbox с повторами, поэтому медленный или недоступный клиент не задерживает logout пользователя
- Событие на уровне пользователя содержит
subиtoeбезsid -
backchannel_logout_supportedиbackchannel_logout_session_supportedесть в документе discovery по умолчанию
Примечания
edgeчитает уведомление о logout из того же события и завершает соответствующие сессии; см. Edge.- Отзыв access token использует отдельное событие в том же back channel; см. RFC 7009.
- Флаги discovery выше берутся из хранимого документа discovery, который оператор может редактировать; они не выводятся из настроек клиентов.
Куда смотреть
Справочник OpenAPI содержит спецификацию logout, а Edge объясняет, как edge обрабатывает уведомления.