#java #security #salesforce #saml #opensaml
#java #Безопасность #salesforce #saml #opensaml
Вопрос:
В нашем веб-приложении я хочу, чтобы поставщик удостоверений (IdP), который аутентифицирует пользователей с помощью salesforce.com .
Я закончил с настройками единого входа в salesforce.com .
После этих настроек salesforce предоставляет файл метаданных.
Пожалуйста, скажите мне:
- Есть ли какие-либо другие настройки, которые мне нужно сделать в salesforce.com ?
- Что делать дальше в моем Java-коде для аутентификации пользователя?
Ответ №1:
Если у вас есть Salesforce.com действуя в качестве поставщика услуг SAML, вам нужно будет отправлять утверждения SAML из вашего IdP в Salesforce.com для аутентификации пользователей. По сути, это подписанные XML-двоичные объекты, которые передаются в HTTP-перенаправлении или HTTP POST для аутентификации пользователей.
Из Salesforce.com на стороне конфигурации это довольно просто. Вот пример того, что требуется на этой стороне для настройки с помощью решения OpenSSO: https://indirat.wordpress.com/salesforce /
То, что вы вводите в эту конфигурацию, во многом зависит от того, что может делать ваш IdP. Например, какая версия SAML, какой и где идентификатор пользователя содержится в утверждении SAML, а также сертификат публичной проверки, который соответствует ключу, используемому вашим IdP для утверждения цифровой подписи.
Как вы справляетесь с этим в «вашем Java-коде» — это огромный вопрос со многими ответами. Вы должны использовать проверенное решение SAML в качестве IdP, а не пытаться реализовать спецификацию SAML самостоятельно. Существует несколько библиотек с открытым исходным кодом, таких как OpenSAML, которые прекрасно работают в контексте Java, но для интеграции потребуются значительные усилия. Коммерческие решения, такие как предлагаемые поставщиками решений единого входа и федерации (например, Ping Identity), значительно упрощают задачу, если у вас есть бюджет.
Комментарии:
1. Я использую SAML2.0. Пожалуйста, скажите мне, как сделать утверждение SAML. Что мне нужно для утверждения? Т.Е. (файл метаданных, идентификатор пользователя и т.д.)
2. Опять же, это очень сложный вопрос с огромным ответом. Базовая спецификация SAML 2.0 точно определяет, что входит в утверждение SAML ( docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf ) вы будете использовать профиль единого входа, который определяется спецификацией профилей SAML 2.0 ( docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf ). Опять же, то, как вы формируете утверждения и ответы, зависит от того, какое решение SAML вы используете, или если вы создаете его самостоятельно. Например, с помощью OpenSAML: wiki.shibboleth.net/confluence/display/OpenSAML/OSTwoUserManual
3. Спасибо за такую приятную помощь. Я изучаю это. Поскольку моя задача основана на IDP. Пожалуйста, подтвердите этот поток. «Я проанализирую файл метаданных, предоставленный salesforce, и создам утверждение SAML для отправки в Salesforce для аутентификации». Это то, что мне нужно сделать, чтобы выполнить мою задачу?
4. Метаданные сообщат вам начальную информацию о конфигурации (такую как любые сертификаты подписи и URL-адрес службы-потребителя утверждений). Вам не нужно анализировать это в вашем приложении, вы можете просто вручную взять из него то, что вам нужно, поскольку это может не сильно измениться. Основной частью вашей работы будет: 1.) Получать запросы аутентификации SAML от SFDC по вашему настроенному URL IdP (настроенному в конфигурации SFDC SSO config), 2.) Аутентифицировать пользователя, 3.) Отправлять подписанный ответ SAML с утверждением обратно в SFDC через HTTP POST / Redirect на URL службы потребителя утверждений.
5. @ Скотт Томилсон. Знаете ли вы, что я создаю IDP, подобный OpenSSO и OneLogin.