Как использовать логин SAML с приложением REST API + SPA? - PullRequest
0 голосов
/ 01 мая 2019

Я хочу использовать логин SAML для одного веб-приложения с REST API. Как мне это сделать? Обычно, скажем, с OAuth, давайте использовать Google / Firebase в качестве примера:

  • SPA вызывает Google для входа. Google возвращает токен Google ID
  • SPA может вызвать Сервер с токеном Google ID, который сервер может проверить с помощью Google и вернуть токен доступа для использования с приложением

Во-первых, это правильно или я что-то не так понял?


Но с помощью SAML, насколько я вижу, его пользователь перенаправляется на SAML IDP, затем SAML IDP перенаправляет пользователя на URL подтверждения сервера. Поскольку существует это перенаправление, как я могу использовать его в контексте REST? Я не знаком с SAML, но не вижу токена. Сервер просто получает «утверждение» с пользовательской информацией?

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Утверждение SAML является эквивалентом id_token в OpenID Connect 1.0, который использует Google. В SAML отсутствует access_token. SAML - это протокол аутентификации.

OAuth 2.0, использующий access_tokens, является протоколом авторизации. Вот почему он предоставляет access_token для авторизации доступа к вашему REST API.

OpenID Connect - это расширение OAuth 2.0, которое поддерживает аутентификацию пользователя в дополнение к авторизации API и вводит id_tokens, которые содержат информацию о пользователе.

Один из вариантов использования SAML в одностраничном приложении с REST API - разместить их в одном домене. В этом случае вы можете:

  1. Получите подтверждение от поставщика удостоверений SAML.
  2. Проверьте его (формат, подпись, время жизни и т. Д.) На стороне сервера.
  3. Возвращает сеансовый cookie в ответе, чтобы установить его в браузере.
  4. Каждый запрос к API REST будет сопровождаться файлом cookie сеанса, разрешающим доступ к нему.
0 голосов
/ 02 мая 2019

Вот последовательность событий, которые происходят, когда приложение использует SAML для аутентификации:

1) сервер должен отправить клиенту ответ с URL-адресом для SAMP IDP.2) клиентское приложение перенаправляет браузер на SAML IDP (1).3) После успешной аутентификации сервер SAML отправляет ответ с перенаправлением обратно клиенту.Браузер автоматически отправляет HTML-сервер SAML на ваш сервер.4) После проверки SAML assert и успешной авторизации (вы можете использовать информацию пользователя или другие атрибуты для авторизации пользователя на использование вашего приложения), ваш сервер должен сгенерировать токен, который теперь может использоваться клиентским приложением.

Это базовый сценарий.

Смотрите проект spirng-saml здесь, вы можете попробовать поиграть с примером веб-приложения.https://projects.spring.io/spring-security-saml

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