配置 LinkedIn 验证提供商
将 LinkedIn 配置为验证提供商,以便用户可以使用他们的 LinkedIn 凭据登录 Salesforce。
所需的 Edition
| 适用于:Lightning Experience 和 Salesforce Classic |
| 适用于:Enterprise、Performance、Unlimited 和 Developer Edition |
| 所需用户权限 | |
|---|---|
| 查看设置: | 查看设置和配置 |
| 编辑设置: | 自定义应用程序 与 管理验证提供商权限 |
要将 LinkedIn 配置为身份验证提供商,请完成这些任务。
- 设置注册处理器。
- 查看 LinkedIn 范围。
- 设置 LinkedIn 应用程序。
- 在 Salesforce 中定义 LinkedIn 提供商。
- 更新您的 LinkedIn 应用程序,以使用 Salesforce 生成的回调 URL 作为 LinkedIn OAuth 2.0 重新定向 URL 中的条目。
- 测试单点登录 (SSO) 连接。
- 将 LinkedIn 身份验证提供商添加到登录页面。
对于 Sandbox 用例,您可以跳过其中一些步骤,并使用 Salesforce 受管 LinkedIn 应用程序。对于生产用例,请始终创建自己的 LinkedIn 应用程序,并使用身份验证提供商的凭据。Salesforce 管理的应用程序可能会遇到停机,不建议用于生产。
设置注册处理器
要将身份验证提供商用于单点登录,您必须创建注册处理器。注册处理器创建用户,并更新通过身份提供商访问 Salesforce 的现有用户。您可以使用 Apex 或 Flow Builder 设置注册处理器。有关更多信息,请查看创建身份验证提供商注册处理器。
以下是 LinkedIn 身份验证提供商的 Apex 注册处理器示例。此注册处理器假设请求的范围包含 r_liteprofile 和 r_emailaddress。它还假定用户登录至客户入口网站。
GET
https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~)).//TODO:This auto-generated class includes the basics for a Registration
//Handler class. You will need to customize it to ensure it meets your needs and
//the data provided by the third party.
global class LinkedInRegHandler implements Auth.RegistrationHandler {
//Creates a Standard salesforce or a community user
global User createUser(Id portalId, Auth.UserData data) {
if (data.attributeMap.containsKey('sfdc_networkid')) {
//We have a community id, so create a user with community access
//TODO: Get an actual account
Account a =[SELECT Id FROM account WHERE name = 'LinkedIn Account'];
Contact c = new Contact();
c.accountId = a.Id;
c.email = data.email;
c.firstName = data.firstName;
c.lastName = data.lastName;
insert(c);
//TODO: Customize the username and profile. Also check that the username
//doesn't already exist and possibly ensure there are enough org licenses
//to create a user. Must be 80 characters or less.
User u = new User();
Profile p =[SELECT Id FROM profile WHERE name = 'Customer Portal Manager'];
u.username = data.firstName + '@sfdc.linkedin.com';
u.email = data.email;
u.lastName = data.lastName;
u.firstName = data.firstName;
String alias = data.firstName;
//Alias must be 8 characters or less
if (alias.length() > 8) {
alias = alias.substring(0, 8);
}
u.alias = alias;
u.languagelocalekey = UserInfo.getLocale();
u.localesidkey = UserInfo.getLocale();
u.emailEncodingKey = 'UTF-8';
u.timeZoneSidKey = 'America/Los_Angeles';
u.profileId = p.Id;
u.contactId = c.Id;
return u;
} else {
//This is not a community, so create a regular standard user
User u = new User();
Profile p =[SELECT Id FROM profile WHERE name = 'Standard User'];
//TODO: Customize the username. Also check that the username doesn't
//already exist and possibly ensure there are enough org licenses
//to create a user. Must be 80 characters or less
u.username = data.firstName + '@salesforce.com';
u.email = data.email;
u.lastName = data.lastName;
u.firstName = data.firstName;
String alias = data.firstName;
//Alias must be 8 characters or less
if (alias.length() > 8) {
alias = alias.substring(0, 8);
}
u.alias = alias;
u.languagelocalekey = UserInfo.getLocale();
u.localesidkey = UserInfo.getLocale();
u.emailEncodingKey = 'UTF-8';
u.timeZoneSidKey = 'America/Los_Angeles';
u.profileId = p.Id;
return u;
}
}
//Updates the user's first and last name
global void updateUser(Id userId, Id portalId, Auth.UserData data) {
User u = new User(id = userId);
u.lastName = data.lastName;
u.firstName = data.firstName;
update(u);
}
}
查看 LinkedIn 范围
范围决定了授权过程中您从 LinkedIn 获得的用户信息。出于隐私考虑,LinkedIn 将其 API 更新为 v2,以减少成员登录时返回给开发者应用程序的成员信息数量。在 v2 中,LinkedIn 只返回识别所需的关键成员数据。LinkedIn v2 精简简档 取代了 v1 基本简档。Lite 简档由成员的 ID、名字、姓氏、婚前姓名和简档图片组成。与 v1 一样,用户必须首先获得 LinkedIn 的许可才能共享信息。
当您将 LinkedIn 设置为身份验证提供商时,您可以在 LinkedIn 应用程序设置和 Salesforce 身份验证提供商设置中查看范围。您还可以使用字段选择器查看 LinkedIn 用户信息端点的查询范围。
- 可在 LinkedIn 和 Salesforce 设置中将该范围留空。Salesforce 包含 r_basicprofile,它只提供最基本的用户信息。它还提供 r_emailaddress,其中包含用户的电子邮件地址。
- 以下是在 LinkedIn v2 中检索成员简档的请求:
GEThttps://api.linkedin.com/v2/me。 - Salesforce 需要用户的电子邮件地址。您可以使用 r_emailaddress 单独请求检索用户的电子邮件地址。以下是一个检索成员电子邮件地址的请求。
GET https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))
设置 LinkedIn 应用程序
在为 Salesforce 配置 LinkedIn 之前,在 LinkedIn 中设置应用程序。
- 在 LinkedIn 上登录开发人员帐户。
- 从 LinkedIn 中,单击顶部的简档图片,然后选择我的应用程序。
- 单击创建应用程序。
- 输入应用程序设置。
- 请记录客户端 ID 和客户端密码。
在您的 Salesforce 组织中定义 LinkedIn 提供商
要设置 LinkedIn 提供商,您需要 LinkedIn 客户端 ID 和客户端密码。
- 从“设置”中,在快速查找框中,输入身份验证提供商,单击身份验证提供商,然后单击新建。
- 对于提供商类型,选择 LinkedIn。
- 输入提供商的名称。
- 输入在客户端配置 URL 中使用的 URL 后缀。例如,如果您的提供商的 URL 后缀是 MyLinkedInProvider,您的 SSO URL 将类似于 https://mydomain_url 或 community_url /services/auth/sso/MyLinkedInProvider。
- 对于使用者密码,输入 LinkedIn 客户端密码。
-
要使用 Apex 注册处理器,请执行以下步骤。
- 对于注册处理器类型,选择 Apex。
-
对于注册处理器,选择实施
Auth.RegistrationHandler接口的现有 Apex 类。或者,要为注册处理器创建模板,请单击自动创建注册处理器模板。使用前,需要编辑该类,随后更改默认内容。
-
要将流用于注册处理器,请执行以下步骤。
- 对于注册处理器类型,选择流。
- 对于注册处理器,选择身份用户注册流类型的现有流。
-
选择默认简档。运行注册处理器需要默认简档。如果您未在此处指定默认简档,请在流中设置默认简档。
如果您使用身份验证提供商用户注册流模板,您在此处设置的简档将自动存储在 defaultProfileId 变量中。
-
选择默认客户。如果您将身份验证提供商用于 Experience Cloud 站点,此帐户会存储新的内部用户。
如果您使用身份验证提供商用户注册流模板,您在此处设置的简档将自动存储在 defaultAccountId 变量中。
-
对于执行注册身份,选择执行用户来运行 Apex 类或流。用户必须具有管理用户权限。
执行注册方式提供了注册处理器在其中运行的上下文。在生产中,您通常会为“以用户身份执行注册”创建系统用户。这样,处理器执行的操作可以很容易地追溯到注册过程。例如,如果创建了联系人,该系统用户将创建该联系人。
-
也可以设置这些字段:
- 对于授权端点 URL,输入 https://www.linkedin.com/oauth/v2/authorization。
- 对于令牌端点 URL,输入 LinkedIn 的 OAuth 令牌 URL。例如 https://www.linked.com/oauth/v2/accessToken。有关更多信息,请参见 使用 OAuth 2.0 进行身份验证概览。
- 要更改从 LinkedIn 简档 API 请求的值,输入用户信息端点 URL。有关更多信息,请参见简档 API。该 URL 必须以 https://api.linkedin.com/v2/me 开头,且请求的字段必须对应请求范围。
- 对于默认范围,输入表示您从 LinkedIn 中获取信息的支持值或用空格隔开的值。
- 如果您输入使用者密钥和使用者密码,使用者密码将默认包含在 SOAP API 响应中。要隐藏 SOAP API 响应中的密码,请取消选择在 SOAP API 响应中包含使用者密码。从 2022 年 11 月开始,密码始终用占位符值替换元数据 API 响应。在部署时,将占位符替换为纯文本形式的使用者密码,或者稍后通过 UI 修改该值。
- 对于自定义错误 URL,输入提供商用于报告任何错误的 URL。
- 对于图标 URL,将路径添加到图标,以在站点的登录页面上显示为按钮。此图标仅应用于 Experience Cloud 站点。它不会显示在您的 Salesforce 登录页面或 My Domain 登录 URL 上。用户单击该按钮,通过站点关联的验证提供商登录。指定自己图像的路径或复制其中一个示例图标的 URL 到该字段中。
- 要使用 LinkedIn 用户的入口网站,从“入口网站”下拉列表中选择入口网站。
- 要使用 Salesforce 多重身份验证 (MFA) 功能而不是身份提供商的 MFA 服务,请选择为该 SSO 提供商使用 Salesforce MFA。此设置仅针对直接应用了 MFA 的用户触发 MFA。有关更多信息,请查看为 SSO 使用 Salesforce MFA。
- 保存您的工作。
定义身份验证提供商后,Salesforce 会生成这些客户端配置 URL。
- 仅测试初始化 URL — 用户会使用此 URL 以确保第三方提供商设置正确。管理员在浏览器中打开此 URL,登录到第三方,并被重定向到带有属性映射的 Salesforce。
- 单点登录初始化 URL — 从使用第三方凭据的第三方会使用此 URL 以执行 SSO 到 Salesforce。用户在浏览器中打开此 URL,并登录到第三方。第三方创建用户或更新现有用户。然后,第三方会作为该用户签署到 Salesforce。
- 现有用户链接 URL — 使用此 URL 链接现有的 Salesforce 用户到第三方帐户。用户在浏览器中打开此 URL、登录到第三方、登录到 Salesforce,并批准此链接。
- 仅 OAuth 初始化 URL — 使用此 URL 为第三方获取 OAuth 访问标记。用户必须为第三方服务获得标记验证 Salesforce。以后的单点登录功能不提供此流程。
- 回调 URL — 使用验证提供商为配置回调的端点的此 URL。验证提供商必须重定向到带有每个客户端配置 URL 信息的回调 URL。
- 指导用户登录特定的站点。
- 从第三方获得自定义权限。
- 验证后转到特定位置。
更新您的 LinkedIn 应用程序
在 Salesforce 中定义 LinkedIn 验证提供商后,返回 LinkedIn。更新您的应用程序,以将 Salesforce 生成的回调 URL 用作 LinkedIn OAuth 2.0 重定向 URL 值。
测试单点登录连接
在浏览器中,打开验证提供商设置页面上的仅测试初始化 URL。该操作会让您重定向到 LinkedIn 并要求您登录。然后,提示您验证应用程序。在授权后,您将被重定向到 Salesforce。
将身份验证提供商添加到登录页面
配置您的登录页面,将身份验证提供商显示为登录选项。根据您是为组织还是 Experience Cloud 站点配置 SSO,此步骤有所不同。
- 对于组织,请查看将身份验证提供商添加到贵组织的登录页面。
- 对于 Experience Cloud 站点,请查看将身份验证提供商添加到 Experience Cloud 站点的登录页面。

