Identity Server 4 - проверка проблемы сеанса iframe - клиент oidc - PullRequest
0 голосов
/ 10 сентября 2018

Я использую OIDC Client в своем угловом приложении для аутентификации на сервере идентификации 4. Все работает, пока я не нажму на кнопку выхода.

Я включил сеанс монитора (включен по умолчанию), чтобы другой браузер мог обнаружить выход, а я мог выйти из системы на другой вкладке того же браузера.Когда я выхожу из одной вкладки, другая вкладка отправляет запрос серверу идентификации на токен обновления без вывода сообщений, и это происходит успешно.Я ожидаю, что другой браузер также выйдет из системы.Если я нажму F5 на другой вкладке, то да, он будет перенаправлен для входа снова.но не автоматически.

1 Ответ

0 голосов
/ 12 сентября 2018

Обновление

для выхода из других клиентов, имеющих общий сервер идентификации frontChannel , вы можете добавить Iframe в свою личностьчтобы уведомить своих клиентов о выходе из системы ( oidc-client.js поддерживает выход из фронтального канала )

клиенты на стороне фронтального канала

Чтобы выйти изПользователь из серверных клиентских приложений через спецификацию переднего канала, страница «Выйти из системы» в IdentityServer должна отобразить, чтобы уведомить клиентов о том, что пользователь вышел из системы.Клиенты, которые хотят получать уведомления, должны иметь установленное значение конфигурации FrontChannelLogoutUri.IdentityServer отслеживает клиентов, в которые пользователь вошел, и предоставляет API-интерфейс GetLogoutContextAsync для IIdentityServerInteractionService (подробности).Этот API возвращает объект LogoutRequest со свойством SignOutIFrameUrl, которое ваша вышедшая страница должна отобразить в.

Обратные клиентские серверные клиенты

Для выхода пользователя из серверных клиентских приложений.через спецификацию обратного канала конечная точка SignOutIFrameUrl в IdentityServer автоматически запускает межсерверный вызов, передавая клиенту подписанный запрос на выход.Это означает, что даже если нет клиентов переднего канала, «вышедшая из системы» страница в IdentityServer должна по-прежнему отображать объект SignOutIFrameUrl, как описано выше.У клиентов, которые хотят получать уведомления, должно быть установлено значение конфигурации BackChannelLogoutUri.

Клиенты JavaScript на основе браузера

Учитывая, как разработана спецификация управления сеансом, в IdentityServer нет ничего особенного, что вам нужносделать, чтобы уведомить этих клиентов, что пользователь вышел из системы.Однако клиенты должны выполнять мониторинг check_session_iframe, и это реализуется библиотекой JavaScript oidc-client.

, после чего вы можете прослушивать событие addUserSignedOut из oidc-client во всех ваших клиентах и ​​триггер signoutRedirect для выхода из системы вашего клиента

this._userManager.events.addUserSignedOut(() => {
    this._userManager
      .signoutRedirect()
       .then(resp => {
         console.log('Success');
       })
       .catch(err => {
         console.log(err);
       });
 });

проверьте эту документацию для получения более подробной информации

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