비밀번호 정책 사용 설정, 사용 중지 및 사용하기
이 문서에서는 비밀번호 정책을 사용하여 신규 사용자와 기존 사용자의 비밀번호 안전성을 향상시키는 방법을 설명합니다.
개요
비밀번호 정책을 사용하면 비밀번호 복잡성 요구사항을 적용하여 계정 보안을 강화할 수 있습니다. 비밀번호 정책은 다음 비밀번호 요구사항을 지원합니다.
- 소문자 필요
- 대문자 필요
- 숫자 필요
- 영숫자가 아닌 문자 필요
- 비밀번호 최소 길이(6~30자, 기본값은 6)
- 비밀번호 최대 길이(최대 4,096자)
다음 문자는 구성된 경우 영숫자가 아닌 문자 요구사항을 충족합니다.
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ `
시작하기 전에
- Admin SDK를 설치합니다.
시행 모드
다음 두 가지 모드로 비밀번호 정책 적용을 사용 설정할 수 있습니다.
- 필수: 사용자가 정책을 준수하는 비밀번호로 업데이트할 때까지 로그인 시도가 실패합니다.
알림: 사용자가 정책을 준수하지 않는 비밀번호를 사용하여 로그인할 수 있습니다. 정책 충족 필수 기준에서 누락된 기준이 있으면 반환됩니다. 반환되는 기준은 다음과 같습니다.
MISSING_LOWERCASE_CHARACTER
MISSING_UPPERCASE_CHARACTER
MISSING_NUMERIC_CHARACTER
MISSING_NON_ALPHANUMERIC_CHARACTER
MINIMUM_PASSWORD_LENGTH
MAXIMUM_PASSWORD_LENGTH
이 정보를 사용자에게 전송하여 비밀번호를 업데이트하도록 알릴 수 있습니다. 다음 예시는 누락된 비밀번호 기준이 포함된 응답을 보여줍니다.
{ "kind": "identitytoolkit#VerifyPasswordResponse", "localId": "CJL1i2", "email": "cloudysanfrancisco@gmail.com", "displayName": "", "idToken": "ID_TOKEN", "registered": true, "userNotifications": [ { "notificationCode": "MISSING_NUMERIC_CHARACTER", "notificationMessage": "Password must contain a numeric character" }, { "notificationCode": "MISSING_NON_ALPHANUMERIC_CHARACTER", "notificationMessage": "Password must contain a non-alphanumeric character" } ] }
신규 사용자는 정책을 준수하는 비밀번호를 선택해야 합니다. 활성 사용자가 있는 경우 비밀번호 정책을 즉시 적용하지 않으려면 필수 모드를 사용 설정하지 않는 것이 좋습니다. 대신 사용자가 현재 비밀번호로 로그인할 수 있게 하고 비밀번호에 필요한 요구사항을 자세히 설명하는 알림을 전송하는 알림 모드를 사용하세요.
적용을 사용 설정할 때 forceUpgradeOnSignin
를 true
로 설정하여 필수 모드로 시행을 사용 설정하세요. 알림 모드에서 적용을 사용 설정하려면 false
로 설정합니다.
적용 사용 설정
비밀번호 정책을 적용하려면 다음 단계를 따르세요.
- 아직 구성하지 않았으면 이메일 및 비밀번호 로그인을 구성하세요.
프로젝트 수준에서 비밀번호 정책을 적용하려면 다음을 실행합니다.
import { getAuth } from 'firebase-admin/auth'; // Update project config with password policy config getAuth().projectConfigManager().updateProjectConfig({ passwordPolicyConfig: { enforcementState: 'ENFORCE', forceUpgradeOnSignin: true, constraints: { requireUppercase: true, requireLowercase: true, requireNonAlphanumeric: true, requireNumeric: true, minLength: MIN_PASSWORD_LENGTH, maxLength: MAX_PASSWORD_LENGTH, }, }, })
다음을 바꿉니다.
MIN_PASSWORD_LENGTH
: 필수 비밀번호 최소 길이MAX_PASSWORD_LENGTH
: 필수 비밀번호 최대 길이
테넌트 수준에서 비밀번호 정책을 적용하려면 다음을 실행합니다.
import { getAuth } from 'firebase-admin/auth'; // Update project config with password policy config getAuth().tenantManager().createTenant({ displayName: "admin-tenant", passwordPolicyConfig: { enforcementState: 'ENFORCE', forceUpgradeOnSignin: true, constraints: { requireUppercase: true, requireLowercase: true, requireNonAlphanumeric: true, requireNumeric: true, minLength: MIN_PASSWORD_LENGTH, maxLength: MAX_PASSWORD_LENGTH, }, }, })
적용 사용 중지
프로젝트 수준에서 비밀번호 정책 적용을 사용 중지하려면 다음을 실행합니다.
import { getAuth } from 'firebase-admin/auth'; // Update project config with password policy config getAuth().projectConfigManager().updateProjectConfig({ passwordPolicyConfig: { enforcementState: 'OFF', }, })
테넌트 수준에서 비밀번호 정책 적용을 사용 중지하려면 다음을 실행합니다.
import { getAuth } from 'firebase-admin/auth'; // Update tenant config with password policy config getAuth().tenantManager().updateTenant(TENANT-ID, { passwordPolicyConfig: { enforcementState: 'OFF', }, })
TENANT-ID
를 비밀번호 정책을 사용 중지할 테넌트 ID로 바꿉니다.
클라이언트 측에 적용
제출하기 전에 클라이언트 측의 프로젝트 또는 테넌트에 대한 비밀번호 정책을 기준으로 비밀번호의 유효성을 검사할 수 있습니다.
import { getAuth, validatePassword } from 'firebase/auth';
const auth = getAuth();
auth.tenantId = TENANT-ID;
const status = await validatePassword(auth, 'password').catch((error) => {
// Password could not be validated.
});
const policy = status.passwordPolicy;
// Use the status and policy to show what requirements are met and which are missing.