Как создать приложение на основе Spring MVC для подключения к любому поставщику услуг для выполнения единого входа

Мы хотим создать одно приложение на основе Spring MVC, которое будет поддерживать следующий вариант использования:

  1. Пользователь получает доступ к URL-адресу приложения для входа в приложение.
  2. После ввода действительных учетных данных для входа в приложение пользователь может получить доступ к любому приложению поставщика услуг для выполнения единого входа.
  3. При доступе любого приложения поставщика услуг должен быть сгенерирован ответ SAML и отправлен по URL-адресу ACS поставщика услуг (услуга утверждения потребителей).
  4. Кроме того, в дополнение к SSO, инициированному IDP, он также должен поддерживать SSO, инициированный SP, где запрос аутентификации будет размещен на странице входа в приложение, после того, как действительные учетные данные введены пользователем, приложение должно перенаправить поставщику услуг (который отправил запрос аутентификации ).

Приложение должно иметь свою собственную страницу входа и механизм аутентификации, оно не должно перенаправлять к какому-либо другому провайдеру идентификации для аутентификации.

Должны ли мы использовать обычное приложение на основе Spring MVC, которое будет генерировать ответ SAML с использованием открытой библиотеки SAML, или любой другой конструктор SAML может использоваться для удовлетворения вышеуказанного варианта использования.


person user3899094    schedule 14.02.2017    source источник


Ответы (1)


В основном это означает: ваше приложение связывает IdP, совместимого с SAMLv2 (пожалуйста, не пытайтесь создать его самостоятельно на основе некоторой библиотеки SAML) - ваше приложение вызывает API IdP для аутентификации и выдает токен сеанса, который IdP распознает позже ( в противном случае аутентификация всегда будет повторяться, когда другое приложение (действующее как SAMLv2 SP) захочет выполнить единый вход

Проблема с последним: «токеном», скорее всего, будет файл cookie, и тогда применяются ограничения спецификации файлов cookie. Это означает, что вы можете использовать файлы cookie на основе хоста (которые требуют безопасности), если ваше приложение и IdP развернуты за одним и тем же FQDN (например, с помощью обратного прокси-сервера HTTP).

Другая проблема: как ваше приложение узнает, когда отображается «экран входа в систему», действительно ли у пользователя есть действительный сеанс с IdP, потому что SSO был запущен на другом SP?

Способ SAML: сначала вам нужно выполнить «пассивный AuthnRequest», чтобы это проверить.

Вывод: ваш вариант использования может быть реализован, но усилия кажутся довольно высокими. Я не знаю, есть ли какая-то библиотека / фреймворк, которая предлагала бы это в настоящий момент OOTB.

person Bernhard Thalmayr    schedule 14.02.2017