从Java作为SP连接到Salesforce

时间:2019-06-14 20:52:43

标签: java salesforce saml-2.0

我正在尝试从Java Web应用程序连接到salesforce。我希望我的应用程序充当Idp,而销售人员充当SP。但是,我需要帮助将声明发送给Salesforce。请帮忙!

1 个答案:

答案 0 :(得分:0)

问题1 :我希望我的应用程序充当IDp,而Salesforce充当SP。

答案
(I)您应该使用Java Web应用程序实现SAML IdP。

(II)为了在您的生产环境中快速部署SAML IdP,强烈建议利用第三方SAML IdP(例如Shibboleth IdP)。这样您就有足够的时间为Java Web应用程序开发自己的SAML IdP。

我们用 Java 开发了先前的Zero-Password Authentication and Authorization System版本,并利用Shibboleth IdP为企业应用程序提供了SAML SSO。

我们在 Scala 中开发了具有扩展性和高可用性的Zero-Password Authentication and Authorization System当前版本,以为没有Shibboleth IdP的企业应用程序本机提供SAML SSO。

GitHub存储库上的

(III)How to build and run Shibboleth SAML IdP and SP using Docker container提供了有关使用Shibboleth SAML IdP和OpenLDAP为Java中的SAML构建自己的IDP的说明。

  • Shibboleth SAML IdP负责身份联合。

  • OpenLDAP负责身份验证。

(IV)我已验证了由Docker运行的Shibboleth SAML IdP(身份提供程序)和OpenLDAP为以下企业应用程序提供的SAML单一登录(SSO)。换句话说,我利用运行Docker的Shibboleth SAML IdP和OpenLDAP成功登录到以下企业应用程序。

Microsoft Office 365
Google G Suite
Salesforce
Dropbox
Box
Amazon AWS
OpenStack
Citrix NetScaler
VMware vCloud Director
Oracle NetSuite

(V)为方便起见,我进行了第8次提交,将Salesforce SP元数据和相应的SAML配置上传到How to build and run Shibboleth SAML IdP and SP using Docker container
请注意:我已成功使用https://example.my.salesforce.com登录到Salesforce组织的用户名“ winston.hong@example.com”的“ example.com”帐户(Shibboleth IdP running with Docker Container)。

通过执行以下Shibboleth SAML IdP配置过程,您可以使用用户名(例如“ winston.hong@your-company”)登录到Salesforce组织的“ your-company.com”帐户(https://your-company.my.salesforce.com)。 .com”)。

(V.a)从GitHub存储库下载构建和运行Shibboleth SAML IdP的源代码。

$git clone https://github.com/winstonhong/Shibboleth-SAML-IdP-and-SP

(V.b) 替换为“ shibboleth-idp-dockerized / ext-conf / metadata / sp-salesforce-com.metata”和从Salesforce组织帐户下载的Salesforce SP元数据。

(V.c)编辑“ shibboleth-idp-dockerized / ext-conf / conf / relying-party.xml”以替换 SAML SP实体ID“ https://example.my.salesforce.com”和“ https://your-company.my.salesforce.com

(Vd)编辑“ LDAP-Dockerized-CentOS / users.ldif”,将用户信息“ winston.hong@example.com”替换为用户信息“ winston.hong@your-company.com”。

(V.e)按照README(https://github.com/winstonhong/Shibboleth-SAML-IdP-and-SP/blob/master/README.md)提供的说明来构建和运行Shibboleth IdP,OpenLDAP和Shibboleth SP。

验证您可以通过Shibboleth IdP登录Shibboleth SP应用程序。

(Vf)使用[公共证书模板“ shibboleth-idp-dockerized / ext-conf / credentials / idp-signing.crt”和第二个签名证书“​​ shibboleth-idp-dockerized / ext-conf / metadata / idp-metadata.xml”来创建Shibboleth IdP的断言签名公共证书。然后,您需要将Shibboleth IdP的签名证书上载到您的Salesforce组织帐户。

(V.g)按照说明Set Up Salesforce Single Sign-On for Your Internal Users用您的Salesforce组织帐户完成SAML SP配置。请注意,“为 SAML身份类型选择断言包含用户的Salesforce用户名”。

(V.h)现在,您可以通过Shibboleth IdP以SP身份登录到Salesforce组织帐户。

很容易将Shibboleth IdP配置为使用与Java Web应用程序相同的数据存储/存储库(例如OpenLDAP或MySQL)。然后,您的Java Web应用程序将充当SAML IdP,而无需任何开发任务。

(VI)另一个StackOverflow问题"Setting up a new Shibboleth IdP to work with an existing SAML SP"提供了有关Shibboleth SAML配置的有价值的信息和讨论。

问题2 :但是,我需要帮助才能将断言发送给Salesforce。

答案
按照问题1的答案提供的说明,您的Java Web应用程序可以利用基于Java的Shibboleth SAML IdP将断言发送给Salesforce。