Обновления для исправления ошибок:
Вот несколько вариантов SAML 2, которые вы можете использовать.
- PingFederate https://www.pingidentity.com/ ХОРОШИЙ материал, который поможет вам понять SAML и SSO. Коммерческий и используется многими компаниями.
- JOSSO All-Java http://www.josso.org/confluence/display/JOSSO1/JOSSO+-+Java+Open+Single+Sign-On+Project+Home, LGPL 2.1 или более поздняя версия
- LASSO Java API поверх собственной реализации. http://lasso.entrouvert.org/ Двойная лицензия (бесплатно только для некоммерческого использования).
- OpenAM All-Java http://java.net/projects/opensso/, CDDL 1.0
- Shibboleth SP C ++, http://shibboleth.internet2.edu/, Лицензия Apache, версия 2.0.
- библиотеки OpenSAML Java или C ++, https://wiki.shibboleth.net/confluence/display/OpenSAML/Home/ лицензия Apache, версия 2.0.
- Несуществующий OpenSSO (стал OpenAM) All-Java http://java.net/projects/opensso/, CDDL 1.0
- Shibboleth IdP All-Java Это не SP, а IdP, который полезен для тестирования вашего SP.
Shibboleth SP - это продукт , который реализует SAML 2.0 для вас, но OpenSAML - это просто библиотека , с помощью которой вы можете реализовать решение SAML 2.0. Сама библиотека является низкоуровневой и даже близко не является решением для единого входа. OpenSAML сам по себе не является решением SAML 2.0.
Чтобы использовать OpenSAML или любое SAML 2.0 решение, вам необходимо будет обменяться метаданными, как указано ниже. С OpenSAML вам придется вручную создавать XML-файл для ваших собственных метаданных. Это будет много работы, как указано ниже. Продукты SAML 2.0 сгенерируют этот файл метаданных XML для вас, а также сгенерируют необходимые ключи RSA, используемые для шифрования и подписания утверждений SAML 2.0. С OpenSAML у вас будет поддержка API для загрузки частей файлов XML и API для генерации и анализа ваших утверждений, но вы будете писать код Java, который фактически создает взаимодействие SSO.
SP не обязательно требуется ActiveDirectory / LDAP, но в вашем веб-приложении вам понадобится каталог определенного типа, который отслеживает пользователей. Если в вашем веб-приложении уже есть представление о пользователях с некоторой идентифицирующей информацией, которую вы можете использовать для сопоставления их с представлениями пользователей IdP, вы можете просто сопоставить их в своем веб-приложении на основе значений атрибутов в утверждениях SAML 2.0. (Если вашему веб-приложению все равно, кто является пользователями, вы можете просто разрешить доступ к приложению на основании того, что пользователь «действителен».)
-
Интеграция Shibboleth2 SSO с веб-приложением Java не так уж сложна. Использование OpenSAML для реализации единого входа будет работать, но это будет гораздо больше усилий, чем интеграция сервера Apache с Shibboleth.
Для использования Shibboleth необходимо, чтобы у вас был Apache2 с включенным модулем Shibboleth и , а у вас установлен демон Shibboleth SP. Как правило, они будут вместе на одной коробке. Если вы используете Tomcat для размещения веб-приложения Java, то я рекомендую использовать mod_proxy_ajp для связи между HTTP-сервером Apache2 и Tomcat. Таким образом, вы можете выбрать предоставленные Shibolleth переменные в качестве атрибутов запроса сервлета. (Вы должны установить префикс переменной «AJP_» в shibboleth2.xml.)
Пакет Shibboleth SP уже обрабатывает все стандартные сценарии единого входа SAML, с которыми вы можете столкнуться, но попытка реализовать хотя бы один из них с OpenSAML непосредственно в вашем Java-приложении сопряжена с опасностью как от его запуска, так и от сделать это безопасно. Вы также увеличите размер своего веб-приложения, если будете использовать OpenSAML. Стоит отметить, что Shibboleth SP не написан на Java, поэтому у вас не будет примеров использования OpenSAML для этого, но вы можете получить некоторую информацию, посмотрев на код Shibboleth IdP, который является веб-приложением Java.
В любом случае вам необходимо будет обменяться метаданными SP (легко создаваемыми с помощью пакета Shibboleth SP) с вашим провайдером идентификации, а также получить метаданные провайдера идентификации на своем SP (также легко с пакетом Shibboleth SP, как вы просто настроить MetadataProvider).
Онлайн-документация Shibboleth очень поможет вам, когда вы привыкнете к ее использованию.
Я думаю, у вас будет гораздо больше шансов на успех, если вы сможете использовать пакет Shibboleth SP, а не внедрять SAML2 SSO решение с библиотеками OpenSAML.Я не могу говорить с другими решениями единого входа SAML 2 для Java, но они кажутся большими и чрезмерно корпоративными по сравнению с простым Shibboleth 2 SP.