Как обработать единый выход из сервера удостоверений личности с frontchannel? - PullRequest
0 голосов
/ 10 апреля 2019

У нас есть решение, которое использует несколько SPA, написанных на Angular и AngularJS.Эти приложения реализуют библиотеку oidc-client-js и проходят проверку подлинности в Identity Server 4. Из-за ограничений AngularJS нам необходимо отобразить наши устаревшие приложения AngularJS в iframe.Есть одно основное приложение, которое позволяет войти через IdentityServer4, и тогда мы можем открыть различные SPA внутри этого основного приложения.Это работает нормально, пока мы не выйдем из системы, а затем войдем в систему от другого пользователя.В основном приложении и приложениях, написанных на Angular7, пользователь прав, но когда мы входим в приложение, которое отображается в iframe, пользователь остается с предыдущего сеанса.

В соответствии с документами IdentityServer, которые я пытался добавить FrontChannelLogoutUri для уведомления всех зарегистрированных клиентов и завершения всех сеансов.Но я не нашел, что должна делать эта страница выхода из системы.

Также я пытался очистить все разрешения при выходе из системы, но нет разрешений для очистки.Чтобы добиться этого, я использовал следующий метод:

await _persistedGrantService.RemoveAllGrantsAsync(subjectId, clientId);

Этот метод из IdentityServer возвращает пустой список.

var grants = await _interaction.GetAllUserConsentsAsync();

Я верю, что после визуализации FrontChannelLogoutUri сеанс должен быть завершен, но я понятия не имею,как этого добиться.

1 Ответ

0 голосов
/ 12 апреля 2019

После перенаправления на FrontChannelLogoutUri, вероятно, необходимо очистить хранилище сессии в iframe.Пока это работает нормально.

...