Для реализации SAML нужно ли на моем хосте установить Shibboleth SP? - PullRequest
6 голосов
/ 10 января 2012

У меня есть пара вопросов по реализации SAML, чтобы прояснить мою путаницу ...

Мне нужно реализовать SSO в веб-приложении на Java.

  1. Для этого нужно ли на моем хосте установить Shibboleth SP , например, , или я могу предоставить функциональность SP через OpenSAML?

  2. Я предполагаю, что shibboleth делает то же самое, что и OpenSAML, но только на уровне веб-сервера, тогда как OpenSAML сделает это на стороне программного обеспечения. Это предположение верно?

РЕДАКТИРОВАТЬ: Таким образом, Shibboleth (в соответствии со Скоттом Кантором) строится с OpenSAML ... моё предположение всё ещё верно?

  1. Что потребуется для использования OpenSAML? Только URL-адрес IdP и регистрация в IDP?

  2. Нужно ли указывать каталог SP, например, ActiveDirectory / LDAP?

РЕДАКТИРОВАТЬ: Спасибо за ответы, но может кто-то напрямую ответить на вопросы выше и уточнить их ...

Ответы [ 4 ]

13 голосов
/ 11 января 2012

Обновления для исправления ошибок:

Вот несколько вариантов SAML 2, которые вы можете использовать.

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.

3 голосов
/ 09 февраля 2012

Что будет необходимо для использования OpenSAML? Просто URL-адрес IdP и регистрация в idP?

Вам нужна Java и веб-контейнер, и вы включаете библиотеку opensaml в вашу войну.

Вам необходимо локально кэшировать метаданные IdP или искать их каждый раз, когда вы хотите отправить AuthnRequest или обработать SAMLResponse. Также вы должны зарегистрировать свои метаданные SP на стороне IdP.

Если вы используете Shibboleth в качестве IdP, метаданные SP должны быть настроены в файле conf / relying-party.xml.

Нужно ли указывать каталог SP, например, ActiveDirectory / LDAP?

Чтобы войти в IdP, вам нужно настроить ldap или сервер базы данных на стороне IdP и настроить его в файлах conf / attribute-resolver.xml и conf / login.config.

2 голосов
/ 11 января 2012

Такие вопросы следует публиковать в соответствующих списках рассылки, управляемых проектом Shibboleth.

OpenSAML - это очень низкоуровневый инструментарий для реализации решений SAML, Shibboleth - это SSO-пакет для веб-приложений, поддерживающих SAML, который построен на OpenSAML. Построение решений безопасности сложно и требует опыта. Если вы не обладаете этим опытом, вы справитесь с ним плохо, и OpenSAML не документирован, так что обычный разработчик может создать решение с нуля.

Подумайте об использовании полной реализации, будь то Shibboleth или что-то еще. Если вы не можете жить с Apache и нативным кодом и нуждаетесь в Java, то вам следует попробовать один из существующих вариантов Java SP. Даже если они неадекватны, вы должны опираться на них, а не дублировать их.

0 голосов
/ 01 июня 2014

Да, вы должны установить SP на свой сервер или компьютер. И это будет зависеть от вашего веб-сервера, такого как IIS или Apache.

...