Федеративный выход из системы на одностраничном приложении с использованием API-интерфейса dotcore - PullRequest
1 голос
/ 26 марта 2019

Мы используем библиотеку ItFoxTec для аутентификации saml.Федеративный вход работает нормально.Проблема с федеративным выходом из системы.Сценарий таков: у нас есть два приложения с именами mvcapp и singlepageapp (угловое).Когда я нажимаю кнопку входа в mvcapp, я перенаправляю на страницу входа в систему IDP и возвращаюсь в mvcapp после аутентификации.Есть ссылка на мой singlepageapp на mvcapp.Я нажимаю на эту ссылку, я уже вошел в IDP, поэтому мой API получает токен saml от IDP, API-токен потребления, создает токен jwt и перенаправляет меня на singlepageapp вместе с токеном jwt (созданным с помощью токена saml) в строке запроса.

Теперь пользователь нажимает кнопку выхода из mvcapp, запрос на выход отправляется в конечную точку выхода IDP.IDP знает, что этот пользователь вошел в эти два приложения, и у IDP есть конечная точка выхода из этих двух приложений.Теперь IDP делает запрос на выход для singalpageapp (конечная точка выхода - конечная точка api) .api не имеет файлов cookie, но singalpageapp имеет токен jwt в браузере.поэтому мой вопрос заключается в том, как API удалит токен jwt.так что пользователь выходит из обоих приложений.

1 Ответ

0 голосов
/ 27 марта 2019

Во-первых, если IdP поддерживает и SAML 2.0, и OIDC (OpenID Connect), лучшим решением для mvcapp будет использование SAML 2.0, а для одностраничного приложения - OIDC. Или, может быть, оба приложения используют OIDC.

В качестве альтернативы, я думаю, что решение состоит в том, чтобы пользователь OIDC защищал одиночное приложение, а не просто JWT, где на самом деле API также стал IdP. Поскольку API действует как IdP, API должен поддерживать сессию пользователей, но невозможно использовать куки.

OIDC поддерживает сеанс пользователя и выходит из системы с помощью OpenID Connect Session Management . Этот стандарт также поддерживает Уведомление об изменении состояния сеанса , когда клиент singlepageapp может вызвать API IDP для проверки, активен ли пользовательский сеанс в JWT.

...