我正在为Salesforce实现由服务提供者发起的SSO,其中服务提供者将是Salesforce,而身份提供者将是lambda代码。在验证用户的移动号码之后,lambda代码将允许用户。一旦验证了移动号码,lambda将发送一个SAMLResponse。
我已在Salesforce上配置SSO如下:
我还能够生成有效的SAML响应,并在Salesforce SAML验证器上验证了它,如下所示:
我已经创建了一个登录页,它将从Salesforce重定向。
我还创建了一个API,以便每次为给定的联邦ID获得唯一的SAML响应,如下所示:- https://qodz4saz9a.execute-api.us-west-2.amazonaws.com/v1/generate-saml-response?FederationID=rahul@xyz.com
Salesforce登录页面的URL为- https://im--partial.my.salesforce.com/。
在完成所有这些设置之后,我可以重定向到我从Salesforce创建的登录页面,方法是选择“使用不同帐户登录”选项,然后选择"Twilio“如下所示:
Salesforce将使用SAMLRequest参数重定向到登录页面,如下所示:
http://salesforce-sso-page.s3-website-us-west-2.amazonaws.com/?SAMLRequest=fZJRc6IwFIX%2FC.....
我不知道如何从这里开始,并允许从我的登录页面登录到Salesforce。一旦用户输入移动no和OTP,我将用户重定向到以下URL -
https://im--partial.my.salesforce.com?SAMLResponse=PD94bWwgdmVyc2lvbj0i.....
这里,我使用SAMLResponse作为查询参数,将基64编码的SAML响应传递给Salesforce。但我不确定这是否是一种正确的方式认证和登录到Salesforce。
进入OTP (测试OTP为1234)后,我将得到以下错误。
目前,我根本没有使用Salesforce生成的SAMLRequest来生成。
我已经浏览了很多文档,但无法找到将SAMLResponse传递给Salesforce进行登录的方法。如果有人知道这件事,或者我走错了路,请告诉我。
发布于 2020-04-14 13:40:42
SAML响应以特定的“方式”发送给服务提供者,协议将其称为绑定。在这种情况下,预期的绑定是HTTP。使用HTTP作为绑定,SAML响应必须在通过POST方法发送到服务提供者的HTTP请求体中提交。单点登录设置屏幕中列出的Login URL
是SAML响应应该是POSTed的端点。它看起来可能是这样的:
POST / HTTP/1.1
Host: im--partial.my.salesforce.com
Content-Type: application/x-www-form-urlencoded
Content-Length: nnn
SAMLResponse=response
您需要担心SAML请求吗?这取决于您的工作流程和期望的最终用户体验。这一决定所考虑的因素值得提出这样的问题。同时,查看SAML技术概述以获得这些工作流的摘要。
最后但并非最不重要的一点是,Salesforce 从盒子里出来在一些Salesforce产品上支持通过您的移动号码进行的整个身份验证。
https://stackoverflow.com/questions/61214846
复制