2017-02-14 25 views
0

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

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

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

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

ответ

0

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

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^