Подтвердить что ты не робот

Единый вход в Spring с помощью расширения SAML и Shibboleth

Я хотел бы реализовать уровень аутентификации Single Sign-on (SSO) в моем приложении Spring с целью поддержки аутентификации и авторизации из разных доменов безопасности. Я выбрал Shibboleth как IdP, но мне еще предстоит определить, что я буду использовать для SP.

Возможные варианты:

  • Spring Компонент Security SAML Extension: позволяет как новым, так и существующим приложениям выступать в качестве поставщика услуг в федерациях на основе протокола SAML 2.0 и включать функцию единого входа в систему. Spring Расширение безопасности обеспечивает бесшовную комбинацию SAML 2.0 и других механизмов аутентификации и федерации в одном приложении. Все продукты, поддерживающие SAML 2.0 в режиме Identity Provider (например, ADFS 2.0, Shibboleth, OpenAM/OpenSSO, RM5 IdM или Ping Federate), могут использоваться для соединения с Spring Расширением SAML безопасности.

  • Shibboleth (также как SP): Shibboleth - это веб-технология, которая реализует HTTP/POST, артефакт и атрибуты push-профилей SAML, включая Identity Provider (IdP) и поставщиков услуг (SP).

Итак, у меня есть несколько вопросов:

  • Можно ли использовать непосредственно Spring SAML как SP в терминах масштабируемость и ремонтопригодность?
  • Можно использовать внешний SP вместе с Spring Security? Как мне настроить мое приложение и/или мое приложение sever (JBoss 8.0 - WildFly)?
  • Где определить роли (для каждого сценария)?
  • Какой из них стоит?

С уважением, В.

4b9b3361

Ответ 1

Основное различие между ними - это сценарий развертывания:

  • Плагины Shibboleth SP развертываются непосредственно на веб-сервере Apache/IIS.
  • Spring SAML встроен в ваше приложение.

У обоих есть плюсы и минусы.


  • Можно ли использовать непосредственно Spring SAML как SP с точки зрения масштабируемости и ремонтопригодности?

Spring SAML

  • Предлагает большой контроль над тем, как выполняется аутентификация и как процесс аутентификации взаимодействует с вашим приложением. Вы можете, например, создавать собственные пользовательские интерфейсы конфигурации и динамически добавлять ВПЛ, создавать пользовательские экраны входа в систему как часть вашего приложения, иметь полный и легкий контроль над обработкой ошибок, легко поддерживать несколько ВПЛ, динамически настраиваемые данные единого входа (запрошенные AuthnContexts, идентификаторы имен, привязки, принудительное аутентификация).
  • Легко анализировать полученные атрибуты SAML в различных форматах, поддерживать несколько методов аутентификации в одном приложении.
  • Динамически генерировать метаданные SP, он обеспечивает ограниченную многопользовательскую работу и поддерживает профили, недоступные во всех других параметрах (например, одиночный выход из системы, держатель ключа, обнаружение IDP).
  • Плавно взаимодействует с Spring безопасностью, которая приносит множество преимуществ. С помощью Spring SAML вы также можете настроить полную политику проверки подлинности и авторизации непосредственно в своем приложении (например, какие страницы требуют аутентификации или нет, а также при управлении доступом на основе роли к контенту, расширении аутентификации в динамических условиях...).
  • Позволяет развернуть приложение на любом сервере приложений или контейнере и за любым обратным прокси-сервером или веб-сервером без каких-либо проблем с функциональностью.

Плагины Shibboleth

  • Они статически настроены и обычно взаимодействуют с вашим приложением через HTTP-заголовки. Они отделяют логику аутентификации от самого приложения, поэтому единственное, что вам нужно позаботиться, это принятие заголовков и инициализация сеанса приложения с правильным контекстом безопасности. Определение того, какие страницы защищены, присутствует на сервере IIS/Apache и на основе шаблонов URL, что означает, что политика проверки подлинности и авторизации частично определяется вне вашего приложения.
  • Вам необходимо убедиться, что приложение может быть доступно только через веб-сервер (= запретить весь прямой доступ), поскольку это позволит ковать заголовки.
  • Не требует большого количества изменений для самого приложения и поэтому обычно может легко использоваться с устаревшими системами.

  1. Можно использовать внешний SP вместе с Spring Security? Как настроить мое приложение и/или мое приложение (JBoss 8.0 - WildFly)?

Да, это возможно, но это потребует усилий. Вы можете, например, настройте WildFly, чтобы установить общий файл cookie домена в зашифрованном формате и проверьте файл cookie в вашей конфигурации Spring.


  1. Где определить роли (для каждого сценария)?

С Spring SAML вы определяете роли при обработке ответа SAML, например. синтаксический анализ атрибутов SAML. Это достигается путем реализации интерфейса SAMLUserDetailsService и подключения к samlAuthenticationProvider.

С помощью Shibboleth вы можете перенаправлять атрибуты, полученные от IDP, в ваше приложение с заголовками и анализировать их в своем приложении.

WildFly (возможно) позволяет вам определять контекст и роли безопасности непосредственно в SP без необходимости настраивать это в своем приложении. Такая конфигурация может быть не переносимой между серверами приложений.


  1. Какой из них стоит?

Все параметры позволят вам выполнять WebSSO с SAML 2.0. Обычно люди выбирают на основе их требований (например, потребности в настройке), среды (используемый веб-сервер, сервер приложений), предпочтительной методологии разработки (Java,.NET, другой), используемых фреймворков, устаревшего кода. Оба плагина Spring SAML и Shibboleth используются многими клиентами.