自动化用户的完整 MFA 挑战
Salesforce 要求对所有 UI 登录进行多重身份验证 (MFA),包括来自自动化用户的登录。对于自动化用例,例如机器人流程自动化 (RPA),您可以使用生成基于时间的一次性密码 (TOTP) 的第三方身份验证应用程序以编程方式完成 MFA。
所需的 Edition
| 适用于:Salesforce Classic 和 Lightning Experience |
| 适用于:所有版本 |
当您将第三方身份验证应用程序连接到用户帐户时,Salesforce 会共享可以生成 TOTP 的密钥。使用此密钥,您可以编写使用 TOTP 完成 MFA 的脚本,而无需任何人工交互。
重要 请勿对拥有系统管理员简档或修改所有数据、查看所有数据、自定义应用程序或作者 Apex 用户权限的用户帐户使用编程 TOTP 质询。从 2026 年 6 月开始,这些帐户需要使用防网络钓鱼 MFA 方法(密钥,例如内置身份验证程序或安全密钥)。当防网络钓鱼 MFA 要求被强制执行时,这些用户帐户不能使用身份验证程序应用程序。
以下是如何连接第三方身份验证应用程序并获取可以生成 TOTP 的密钥。获取密钥是一个手动过程,您需要完成一次。
备注 Salesforce Authenticator 不支持这些步骤。
- 登录自动化用户帐户。
- 转到用户的个人设置,然后单击高级用户详细信息。
-
查找“应用程序注册:一次性密码身份验证程序”设置,然后单击连接。
-
在连接身份验证程序的屏幕上,单击我无法扫描二维码。
Salesforce 会将您定向到使用密钥连接应用程序的页面。 -
在连接身份验证程序应用程序前,复制密钥并安全存储。将此密钥视为密码,并确保遵循 Salesforce 最佳实践来存储敏感数据。
- 按照屏幕上的说明将应用程序连接到 Salesforce。
要以编程方式完成 TOTP 挑战,请编写使用密钥生成 TOTP 的脚本。包括检索自动生成的 TOTP 并完成 UI 登录的方法。以下是使用 npm 开源 otplib 库的 JavaScript 示例。在此示例中,密钥存储在 AUTOMATION_TOTP_SECRET 变量中。此代码示例仅用于演示 — 请确保编写并测试您自己的自定义代码。
// This example assumes the otplib package has been installed ($ npm i otplib)
const { authenticator } = require('otplib');
// Store the Base32 secret securely (environment variable, secrets manager, etc.)
// This should be the "Key" shown in the UI after clicking "I Can't Scan the QR Code"
const TOTP_SECRET = process.env.AUTOMATION_TOTP_SECRET;
function getTotpCode() {
if (!TOTP_SECRET) {
throw new Error('Missing AUTOMATION_TOTP_SECRET');
}
// otplib's authenticator expects a Base32 secret by default;
// 30s step, 6 digits, SHA1 are the common defaults
return authenticator.generate(TOTP_SECRET);
}
// Example usage in an auth flow:
async function completeMfaChallenge({ enterCode }) {
const code = getTotpCode();
await enterCode(code); // customer supplies their UI interaction
}
module.exports = { getTotpCode, completeMfaChallenge };
本文章是否解决您的问题?
请与我们共享您的想法,以便我们进行改进!

