자동화 사용자를 위한 MFA 챌린지 완료
Salesforce는 자동화 사용자의 로그인을 포함하여 모든 UI 로그인에 다단계 인증(MFA)을 요구합니다. RPA(Robotic Process Automation)와 같은 자동화 사용 사례의 경우 시간 기반 일회용 암호(TOTP)를 생성하는 타사 인증 앱을 사용하여 MFA를 프로그래밍 방식으로 완료할 수 있습니다.
필수 Edition
| 지원 제품: Salesforce Classic 및 Lightning Experience |
| 지원 제품: 모든 Edition |
타사 인증 앱을 사용자 계정에 연결하면 Salesforce가 TOTP를 생성할 수 있는 암호 키를 공유합니다. 이 키를 사용하면 TOTP를 사용하여 사람이 상호 작용하지 않고 MFA를 완료하는 스크립트를 작성할 수 있습니다.
중요 시스템 관리자 프로필 또는 모든 데이터 수정, 모든 데이터 보기, 응용 프로그램 사용자 정의 또는 작성자 Apex 사용자 권한이 있는 사용자 계정에 프로그램 방식 TOTP 챌린지를 사용하지 마십시오. 이러한 계정은 2026년 6월부터 피싱 방지 MFA 메서드(내장 Authenticator 또는 보안 키 등 암호 키)를 사용해야 합니다. 피싱 방지 MFA 요구 사항이 적용되면 해당 사용자 계정은 인증 앱을 사용할 수 없습니다.
타사 인증 앱을 연결하고 TOTP를 생성할 수 있는 키를 가져오는 방법은 다음과 같습니다. 키 가져오기는 한 번 완료하는 수동 프로세스입니다.
노트 다음 단계는 Salesforce Authenticator 지원되지 않습니다.
- 자동화 사용자 계정에 로그인합니다.
- 사용자의 개인 설정으로 이동하여 고급 사용자 세부 사항을 클릭합니다.
-
"앱 등록: 일회용 암호 인증기 설정 및 연결을 클릭합니다.
-
화면에서 인증 앱을 연결하려면 QR 코드를 스캔할 수 없음을 클릭합니다.
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 };
이 기사를 통해 문제를 해결했습니까?
개선을 위한 의견을 보내주세요.

