登录流示例
您可以使用登录流来定制登录体验,并将业务流程与 Salesforce 身份验证集成。常见用例包括登录时收集和更新用户数据,配置多重身份验证,或者集成第三方强身份验证方法。
所需的 Edition
| 适用于 Salesforce Classic 和 Lightning Experience |
| 适用于:Essentials、Professional、Enterprise、Performance、Unlimited 和 Developer Edition |
让我们来看看登录流的三个常见用例:
- 在登录过程中收集和更新用户数据
- 应用定制的多重身份验证 (MFA)
- 整合第三方强认证机制
在登录时收集和更新用户数据
该登录流要求用户确认或更新他们的电话号码,然后在用户帐户中更新。
- 查询用户电话号码的用户对象(如果存在)。
- 显示号码,并要求用户确认或更新它们。
- 如果提供,用新号码更新用户对象。
创建流
- 转到https://help.salesforce.com/articleView?id=flow_builder.htm&language=zh_CN。
-
从工具箱中的“管理器”选项卡,单击新建资源,并创建存储用户 ID 的变量。
登录事件将上下文属性列表传递给流。在流开始时,将在适当输入变量中填充相应属性的值。要在流中使用这些属性,使用 LoginFlow_ATTRIBUTE_NAME 格式定义本地文本变量。例如,您可以使用 LoginFlow_UserId,以验证登录用户的 ID 并查询关联的用户对象。

在添加每个属性后,将显示在“管理器”选项卡中。
支持以下输入变量。
- 登录流登录类型
- LoginFlow_LoginSubType
- 登录流 IP 地址
- 登录流用户代理
- 登录流平台
- 登录流应用程序
- 登录流社区
- 登录流会话级别
- 登录流用户 ID
您也可以在流中将这些属性存储为输出变量。
- LoginFlow_FinishLocation(类型文本)— 此变量决定流完成时将用户发送到哪里。
- LoginFlow_ForceLogout(类型布尔值)— 当此变量设置为
true时,用户将立即注销。
-
在“管理器”选项卡中,单击新建资源创建记录变量,以存储用户的值。

-
添加获取记录元素,以查找尝试登录的用户。

-
指定要存储在字段中的用户属性,例如,Phone 和 MobilePhone。

-
创建欢迎屏幕,以请用户确认文件中的电话号码。

- 要设置屏幕中每个电话组件的默认值,将值设置为 {!user} 记录变量中的适当字段。对于电话,这是 {!user.Phone}。对于手机,这就是{!user.mobilePhone}。
-
要存储每个电话组件的用户条目,请将组件的存储输出值部分中的值设置为与上一步相同的字段。

-
添加在 {!user} 记录变量中使用值的更新记录元素,以更新用户的电话号码。鉴于您将每个电话屏幕组件的输出存储到 {!user} 记录变量中的字段,因此流使用这些值更新用户。

-
将元素相互连接。

-
为登录流命名,并保存。

-
将登录流连接到用户简档。最佳做法是使用测试简档创建专用测试用户。
备注 在确定登录流正常工作之前,不要将登录流与管理员简档相关联。否则,如果失败,则无法登录到您的组织。 - 注销,并以测试用户身份登录,以测试流。
当您测试欢迎流示例时,以下是使用 Lightning Experience 时的外观。
配置多重身份验证 (MFA)
此示例实施登录流,该流使用 Salesforce 支持的 MFA 方法增强了基于时间的一次性密码 (TOTP) 身份验证。TOTP 算法从共享密钥和当前时间计算一次性密码。
该流执行以下操作。
- 如果用户尚未注册,则生成新密钥,并提示用户使用快速响应 (QR) 代码注册密钥。在用户提供有效的 TOTP 令牌之后,密钥被存储在用户记录中。密钥将被重复用于将来的登录。
- 如果用户已注册,仅提示用户输入 TOTP 令牌。
用户可以使用基于时间的身份验证应用程序(例如 Salesforce Authenticator 或 Google Authenticator)扫描 QR 代码并生成 TOTP 令牌。
您可以通过添加公司徽标和公司颜色来增强该流并定制用户体验。您甚至可以添加和执行不同的政策。例如,您可以构建基于 IP 的 MFA 过程,仅当 IP 地址超出特定范围时才需要第二个身份验证因素。
本示例使用 TwoFactorInfo 对象和 Auth.SessionManagement Apex 类自定义和管理 Salesforce 支持的基于标准的 TOTP 多重身份验证。
- 查找当前用户的 TwoFactorInfo 对象。如果用户未注册,则生成密钥。
- 确定用户是否已经注册了 TOTP。
- 如果用户已经注册,则提示用户提供 TOTP 令牌。
- 如果用户未注册,则提示用户注册 QR 代码并提供 TOTP 令牌。
- 验证 TOTP 令牌。如果令牌有效,则登录流结束,用户登录。
- 如果 TOTP 令牌无效,将用户返回到步骤 2。
配置 TOTP 流
-
创建变量。
- Secret – 存储所有多因素操作的密钥。
- Qr_url - 储密钥的 QR 代码编码的 URL。
- IsTokenValid - 存储验证结果。
Secret 和 qr_url 是文本变量,IsTokenValid 是布尔值变量。

-
要为未使用 TOTP 注册的用户生成新密码,将 Apex 操作(原有)元素拖到画布,并选择 TOTPPlugin 原有 Apex 操作。

Apex 操作是扩展流标准功能的 Apex 类。您可以使用 Apex 操作执行复杂计算,对外部服务进行 API 调用等。
TOTPPlugin 访问 Salesforce TOTP 方法,使用 QR 代码生成基于时间的密钥,并验证 TOTP。登录流示例包中提供了 TOTPPlugin 的 Apex 类。
原有 Apex 操作包含这些输入参数。
- OTP_INPUT - 用户提供的 TOTP 令牌。
- OTP_REGISTRATION_INPUT - 用户首次注册时提供的 TOTP 令牌。
- SECRET_INPUT - 用于生成 TOTP 的密钥。
将返回以下输出值。
- SECRET_OUTPUT - 由插件生成的密钥。
- QR_URL_OUTPUT - 密钥的 QR 编码。
- IsValid_OUTPUT – 如果验证成功,将返回
true。否则,将返回false。
如果用户尚未注册,配置此 TOTPPlugin 实例,以生成新密钥和 QR 码。在这种情况下,没有输入传递。

QR 代码的密钥和 URL 存储在 qr_url 和 secret 变量中。

-
配置决策元素注册用户。
此决策验证是否密码为空。如果不为空,用户必须注册。所以将注册定义为决定的结果。否则,用户已经注册,只提供 TOTP 令牌。将默认结果的标签更改为获取 TOTP。

-
配置 Get TOTP 屏幕。
已注册用户会路由到此屏幕,并要求提供 TOTP 令牌。稍后,在流中,您可以使用用户通过引用文本组件的 API 名称输入的 TOTP 令牌 (OTP_input)。

-
配置注册屏幕。请用户扫描 QR 码,初始化 TOTP 客户端应用程序,并输入 TOTP 令牌。

-
要验证用户输入的 TOTP 令牌,配置 TOTPPlugin 原有 Apex 操作的其他实例。
TOTPPlugin 原有操作支持其中两个用例。
- 用户来自注册屏幕。用户必须扫描 QR 代码并提供 TOTP 令牌。TOTP 令牌和密钥都被传递给 TOTPPlugin 进行验证。TOTPPlugin 根据密钥验证 TOTP 令牌。如果有效,密钥将在用户记录中注册并用于将来的登录。
- 用户来自“获取令牌”屏幕。用户已经注册,所以只提供 TOTP。TOTP 令牌通过 TokenInput 参数传递给 TOTPPlugin 进行验证。

isTokenValid 参数返回验证状态,然后保存在 isTokenValid 流变量中。

-
通过使用两种可能结果配置其他决策元素,确定是否登录用户。
- 如果 IsTokenValid 是
true,令牌有效。 - 否则,令牌无效。
如果验证成功,则用户进行到流结束,点击下一步,登录到应用程序。如果验证失败,流会将用户重定向回流中的第 2 步。在第 2 步中,要求注册用户提供新的 TOTP 令牌。如果用户还没有注册,则要求用户注册并提供新的 TOTP 令牌。

- 如果 IsTokenValid 是
-
将元素相互连接。
- 若要将“注册”决策连接到“注册”屏幕时,请选择“注册”结果。
- 若要将“注册”决策连接到“获取 TOTP”屏幕,请选择“获取 TOTP”结果。
- 若要将“登录”决策连接到“注册”决策,请选择“令牌无效”结果。
- 保存登录流,激活它,并将其与用户简档连接。
整合第三方强认证方法
您可以使用登录流,通过 API 与外部第三方认证提供商进行交互。
例如,Yubico 使用名为 YubiKey 的物理安全密钥提供强身份验证。Yubico 还在 GitHub 上提供了示例 Apex 库和登录流。该库提供 Apex 类来验证 YubiKey 一次性密码 (OTP)。这些类允许 Salesforce 用户在登录时使用 YubiKey 作为第二个身份验证因素。有关详细信息,请参阅 yubikey-salesforce-client。
您还可以实施第三方 SMS 或语音传送服务,如 Twilio 或 TeleSign,以实施基于 SMS 的多重身份验证和身份验证流。有关详细信息,请参阅部署第三方基于 SMS 的多重身份验证。
登录流示例包
登录流示例包是非受管软件包,可将不同登录流安装到您的 Salesforce 组织。它包含以下示例。
- 电子邮件确认 - 发送带有验证码的电子邮件。
- SF-TOTP — 启用 TOTP 多重身份验证。
- 条件多因素 - 对来自可信 IP 地址的用户跳过多重身份验证。
- 设备激活 - 使用电子邮件或多重身份验证确认用户身份。
- 接受服务条款 - 在继续之前,请求用户同意条款。

