在 Salesforce 单点登录 (SSO) 认证过程中,当身份验证提供者(如登录中心)验证用户身份成功后,会通过 SAML(Security Assertion Markup Language) 或 OAuth 2.0 的协议回传参数给 Salesforce 来进行用户身份匹配。具体来说,最关键的参数是用户的唯一标识符(通常称为 NameID 或者 User ID),以及其他必要的属性(Attributes)。以下是 SSO 过程中常见的关键参数:
1. SAML SSO 认证
在 SAML SSO 中,登录中心(身份提供者,IdP)通过 SAML 响应返回给 Salesforce(服务提供者,SP)。SAML 响应中包含以下关键参数:
- NameID:这是用户在 IdP 中的唯一标识符,通常是用户的电子邮件地址或用户名,Salesforce 使用它来匹配 Salesforce 中的用户。Salesforce 中的用户名字段必须与此
NameID一致。 - Attributes(属性):除了
NameID,IdP 还可以通过 SAML 属性传递额外的用户信息,如email、firstName、lastName等。Salesforce 也可以根据这些属性进行用户的匹配。
SAML 响应是通过浏览器 POST 回给 Salesforce 的,并带有数字签名来确保安全性。
2. 用户匹配
Salesforce 使用以下几种方式匹配用户:
- 用户名匹配:SAML 响应中的
NameID或 OAuth 2.0 的ID Token中的用户标识符需要和 Salesforce 中的用户名一致。 - Federation ID 匹配:Salesforce 用户的 Federation ID 字段可以和 SAML 的
NameID进行匹配。这种方式通常用来防止用户更改用户名后的认证问题。
通过这些参数,Salesforce 能够识别返回的用户身份,并允许其登录对应的 Salesforce 帐号。
记录一次登录失败的调试过程:
如果配置sso后,在身份中心认证通过,却登录salesforce失败,可以按照以下步骤操作:

1. SAML Identity Type 选择 Assertion contains the Federation ID from the User object
2. 点击按钮SAML Assertion Validator 查看错误信息

3. 这里报错Unable to map the subject to a Salesforce user,说明两个系统之间身份未同步

4. 将认证中心的用户guid赋值给salesforce user对象的Federation ID
再次登录,成功


