Ответ 1
Основное различие между ними - это сценарий развертывания:
- Плагины Shibboleth SP развертываются непосредственно на веб-сервере Apache/IIS.
- Spring SAML встроен в ваше приложение.
У обоих есть плюсы и минусы.
- Можно ли использовать непосредственно Spring SAML как SP с точки зрения масштабируемости и ремонтопригодности?
Spring SAML
- Предлагает большой контроль над тем, как выполняется аутентификация и как процесс аутентификации взаимодействует с вашим приложением. Вы можете, например, создавать собственные пользовательские интерфейсы конфигурации и динамически добавлять ВПЛ, создавать пользовательские экраны входа в систему как часть вашего приложения, иметь полный и легкий контроль над обработкой ошибок, легко поддерживать несколько ВПЛ, динамически настраиваемые данные единого входа (запрошенные AuthnContexts, идентификаторы имен, привязки, принудительное аутентификация).
- Легко анализировать полученные атрибуты SAML в различных форматах, поддерживать несколько методов аутентификации в одном приложении.
- Динамически генерировать метаданные SP, он обеспечивает ограниченную многопользовательскую работу и поддерживает профили, недоступные во всех других параметрах (например, одиночный выход из системы, держатель ключа, обнаружение IDP).
- Плавно взаимодействует с Spring безопасностью, которая приносит множество преимуществ. С помощью Spring SAML вы также можете настроить полную политику проверки подлинности и авторизации непосредственно в своем приложении (например, какие страницы требуют аутентификации или нет, а также при управлении доступом на основе роли к контенту, расширении аутентификации в динамических условиях...).
- Позволяет развернуть приложение на любом сервере приложений или контейнере и за любым обратным прокси-сервером или веб-сервером без каких-либо проблем с функциональностью.
Плагины Shibboleth
- Они статически настроены и обычно взаимодействуют с вашим приложением через HTTP-заголовки. Они отделяют логику аутентификации от самого приложения, поэтому единственное, что вам нужно позаботиться, это принятие заголовков и инициализация сеанса приложения с правильным контекстом безопасности. Определение того, какие страницы защищены, присутствует на сервере IIS/Apache и на основе шаблонов URL, что означает, что политика проверки подлинности и авторизации частично определяется вне вашего приложения.
- Вам необходимо убедиться, что приложение может быть доступно только через веб-сервер (= запретить весь прямой доступ), поскольку это позволит ковать заголовки.
- Не требует большого количества изменений для самого приложения и поэтому обычно может легко использоваться с устаревшими системами.
- Можно использовать внешний SP вместе с Spring Security? Как настроить мое приложение и/или мое приложение (JBoss 8.0 - WildFly)?
Да, это возможно, но это потребует усилий. Вы можете, например, настройте WildFly, чтобы установить общий файл cookie домена в зашифрованном формате и проверьте файл cookie в вашей конфигурации Spring.
- Где определить роли (для каждого сценария)?
С Spring SAML вы определяете роли при обработке ответа SAML, например. синтаксический анализ атрибутов SAML. Это достигается путем реализации интерфейса SAMLUserDetailsService
и подключения к samlAuthenticationProvider
.
С помощью Shibboleth вы можете перенаправлять атрибуты, полученные от IDP, в ваше приложение с заголовками и анализировать их в своем приложении.
WildFly (возможно) позволяет вам определять контекст и роли безопасности непосредственно в SP без необходимости настраивать это в своем приложении. Такая конфигурация может быть не переносимой между серверами приложений.
- Какой из них стоит?
Все параметры позволят вам выполнять WebSSO с SAML 2.0. Обычно люди выбирают на основе их требований (например, потребности в настройке), среды (используемый веб-сервер, сервер приложений), предпочтительной методологии разработки (Java,.NET, другой), используемых фреймворков, устаревшего кода. Оба плагина Spring SAML и Shibboleth используются многими клиентами.