无法在 Salesforce 中实施 SSO

Unable to implement SSO in Salesforce

我正在为 Salesforce 实施服务提供商发起的 SSO,其中服务提供商将是 Salesforce,身份提供商将是一个 lambda 代码。 lambda 代码将在验证用户的手机号码后允许用户。验证手机号码后,lambda 将发送 SAMLResponse。

我已在 Salesforce 上配置 SSO,如下所示:-

我还能够生成有效的 SAML 响应并已在 Salesforce SAML 验证器上对其进行验证,如下所示:-

我创建了一个将从 Salesforce 重定向的 login page

我还创建了一个 API 以便每次针对给定的联合 ID 获得唯一的 SAML 响应,如下所示:- https://qodz4saz9a.execute-api.us-west-2.amazonaws.com/v1/generate-saml-response?FederationID=rahul@xyz.com

URL 对于 Salesforce 登录页面是- https://im--partial.my.salesforce.com/.

完成所有这些设置后,我可以通过选择 "Log In with a Different Account" 选项然后选择 "Twilio" 重定向到我从 Salesforce 创建的登录页面,如下所示:-

Salesforce 正在使用 URL 中的 SAMLRequest 参数重定向到登录页面,如下所示:-

http://salesforce-sso-page.s3-website-us-west-2.amazonaws.com/?SAMLRequest=fZJRc6IwFIX%2FC.......

我不确定如何从这里继续并允许从我的登录页面登录到 Salesforce。用户输入手机号码和 OTP 后,我会将用户重定向到下方 URL -

https://im--partial.my.salesforce.com?SAMLResponse=PD94bWwgdmVyc2lvbj0i.......

这里我使用 SAMLResponse 作为查询参数来传递 base 64 编码的 SAML 响应以登录到 Salesforce。但我不确定这是否是验证和登录 Salesforce 的正确方法。

输入 OTP 后(测试 OTP 为 1234)出现以下错误。

我暂时没有使用 Salesforce 生成的 SAMLRequest 来生成 SAMLResponse

我查阅了很多文档,但找不到将 SAMLResponse 传递给 Salesforce 以进行登录的方法。如果有人对此有任何想法,或者我是否遵循了错误的步骤,请告诉我。

SAML 响应在特定 "way" 中发送到服务提供商,协议将此称为 绑定 。在这种情况下,预期的绑定是 HTTP POST。使用 HTTP POST 作为绑定,SAML 响应必须在通过 POST 方法发送给服务提供商的 HTTP 请求正文中提交。单点登录设置屏幕中列出的 Login URL 是应该 POST 编辑 SAML 响应的端点。它可能看起来像这样:

POST / HTTP/1.1
Host: im--partial.my.salesforce.com
Content-Type: application/x-www-form-urlencoded
Content-Length: nnn
SAMLResponse=response

您需要担心 SAML 请求吗?这取决于您的工作流程和所需的最终用户体验。进入此决定的考虑因素值得他们自己的 SO 问题。同时,请查看 SAML Technical Overview 以获得这些工作流的摘要。

最后但同样重要的是,Salesforce out of the box 在某些 Salesforce 产品上支持通过您的手机号码进行的整个身份验证序列。