将功能动态添加到身份验证提供商
为获得身份验证提供商功能的最大灵活性,请创建自己的 URL 参数转发允许列表。使用允许列表,您可以在运行时将允许列表参数动态添加到客户端配置 URL,并将其转发到第三方提供商。例如,将用户的语言首选项转发到第三方提供商,以便提供商的登录页面以用户所需的语言显示。
所需的 Edition
| 适用于:Enterprise、Performance、Unlimited 和 Developer Edition |
| 所需用户权限 | |
|---|---|
| 要查看身份验证提供商设置: | 查看设置和配置 |
| 要编辑身份验证提供商设置: | 自定义应用程序和管理验证提供商权限 |
当您通过调用客户端配置 URL 初始化身份验证提供商单点登录流时,Salesforce 会生成授权 URL,其中用户被重定向到第三方提供商。当您将 URL 转发参数列入允许列表时,您可以在调用时将其动态添加到客户端配置 URL 中。然后,该参数会作为授权 URL 的一部分转发到第三方提供商。
因为您可以将任何 URL 参数加入允许列表,所以您可以使用此功能来动态调用第三方提供商的不同体验。
例如,使用此功能控制第三方提供商登录页面的语言。想象一下 Experience Cloud 站点,用户通过单击按钮来选择他们的语言首选项。然后,他们被重定向到站点的登录页面,在那里他们可以选择通过第三方提供商登录 Google。您想要将用户的语言首选项转发到 Google,以便 Google 知道为登录页面显示什么语言。因此,您将 ui_locales 参数列入允许列表。然后,您开发站点,以便当用户选择他们的语言首选项时,您的站点将其存储在 Cookie 中。如果用户选择使用 Google 登录,您的站点会从 Cookie 中提取值,将其存储在 ui_locales 参数中,并将参数动态添加到身份验证提供商单点登录初始化 URL。然后,ui_locales 参数会作为授权 URL 的一部分从 Salesforce 转发到 Google。此时,用户将被重定向到 Google 的登录页面。由于 ui_locales 参数,登录页面以首选语言显示。
以下是如何使用此功能添加功能的另一个示例。假设您有一个登录页面,用户可以选择单击按钮登录 Google。您知道一些用户有多个 Google 帐户,Google 可以在他们完成登录之前提示他们选择一个帐户。您希望帮助用户跳过这一步,因此您可以在登录页面上添加一个选项,让他们可以在使用 Google 登录之前输入电子邮件地址。然后,您将 login_hint 参数列入允许列表。如果用户输入电子邮件地址,您可以使用 login_hint 参数来存储它。然后,当他们单击使用 Google 登录的选项时,您可以将 login_hint 参数动态添加到单点登录初始化 URL。参数会转发到授权 URL。当用户被定向到 Google 时,Google 已经知道他们想要使用哪个帐户。
要将身份验证提供商转发参数列入允许列表,请使用元数据 API。以下是如何使用 Salesforce CLI 通过元数据 API 和允许列表ui_locales和login_hint参数创建 Google 身份验证提供商的示例。在您开始之前,请确保您已经安装了 Salesforce CLI。
- 将您的组织启用为 Dev Hub
- 创建 Salesforce DX 项目。
- 授权贵组织。
- 构建临时组织定义文件。
-
要验证是否正确创建了临时组织,请运行此 CLI 命令。
.sf org open -o <your scratch org name> - 在 Salesforce DX 项目目录中,创建名为 AuthProviders 的目录。
-
在 AuthProviders 目录中,使用此内容创建名为
package.xml的文件。<Package xmlns="http://soap.sforce.com/2006/04/metadata"> <types> <members>*</members> <name>AuthProvider</name> </types> <version>62.0</version> </Package> - 在 AuthProviders 目录中,创建名为 authproviders 的子目录。
-
在 authproviders 子目录中,使用此内容创建名为
<yourauthprovidername>.authprovider的文件。<AuthProvider xmlns="http://soap.sforce.com/2006/04/metadata"> <friendlyName>MyAuthProvider</friendlyName> <includeOrgIdInIdentifier>false</includeOrgIdInIdentifier> <isPkceEnabled>true</isPkceEnabled> <providerType>Google</providerType> <requireMfa>false</requireMfa> <sendAccessTokenInHeader>false</sendAccessTokenInHeader> <sendClientCredentialsInHeader>false</sendClientCredentialsInHeader> <sendSecretInApis>true</sendSecretInApis> <paramForwardAllowlist> <description>Stores the user's language preferences</description> <param>ui_locales</param> </paramForwardAllowlist> <paramForwardAllowlist> <description>Stores the user's email address</description> <param>login_hint</param> </paramForwardAllowlist> </AuthProvider> -
要将身份验证提供商部署到临时组织,导航回 Salesforce DX 项目目录并运行此 CLI 命令。
sf project deploy start --metadata dir AuthProviders在执行命令时,它会使用允许列表中的ui_locales和login_hint参数在您的组织中创建身份验证提供商。将这些参数添加到客户端配置 URL,并根据需要自定义提供商的功能。
