Аутентификация SAML с использованием salesforce.com

#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.