Как обнаружить выход с фронтального канала во втором существующем открытом окне браузера и перенаправить пользователя на страницу выхода из системы? - PullRequest
0 голосов
/ 16 марта 2020

Допустим, у меня открыто два приложения, по одному на каждой вкладке, и оба используют один и тот же сервер единого входа. Пользователь глобально выходит из системы (фронтальный канал) в приложении A, но приложение B остается открытым в другой вкладке. Фронтальный канал заботится о стирании файлов cookie, но в идеале должен быть способ перенаправить приложение B на страницу «Вы вышли из системы». Тем не менее, поскольку невозможно определить файлы cookie HTTPOnly через javascript, как javascript, работающий на вкладке приложения B, может обнаружить удаление Cook ie и направить пользователя? Я полагаю, что мы могли бы написать не только HTTPOnly cook ie и отслеживать это, но я подумал, что может быть лучшее решение там.

1 Ответ

1 голос
/ 16 марта 2020

IdentityServer4 поддерживает это с помощью «изменения статуса сеанса» spe c здесь:

https://openid.net/specs/openid-connect-session-1_0.html#ChangeNotification

Это позволяет вашему приложению пинговать (через вызовы postMessage в iframe) для изменений в текущем сеансе и получения ответа, показывающего, изменился он или нет. Все это происходит на стороне клиента, и он использует не-HTTP-готовку ie, которая заполняется текущим идентификатором сеанса.

Конечная точка, о которой идет речь, объявляется как check_session_iframe в /.well-known/openid-configuration

oid c -client- js реализует это из коробки, но для серверного приложения вам, возможно, придется развернуть свое собственное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...