パスワード ポリシーを有効化、無効化、使用する
このドキュメントでは、新規ユーザーと既存のユーザーのパスワードの安全度を向上させるためにパスワード ポリシーを設定する方法について説明します。
Firebase コンソールからパスワード ポリシーを設定する場合は、パスワード ポリシーを 設定するをご覧ください。
概要
パスワード ポリシーを使用すると、パスワードの複雑さの要件を適用することで、アカウントのセキュリティを向上させることができます。パスワード ポリシーは、次のパスワード要件をサポートしています。
- 小文字は必須です
- 大文字は必須です
- 数字は必須です
- 英数字以外の文字は必須です
- パスワードの最小文字数(6~30 文字。デフォルトは 6)
- パスワードの最大文字数(最大 4,096 文字)
次の文字が構成されている場合、英数字以外の文字の要件を満たします。
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ `
強制適用モード
パスワード ポリシーの適用は、次の 2 つのモードのいずれかを使用することで有効にできます。
- 必須: ユーザーがポリシーに準拠したパスワードに更新するまで、ログインの試行は失敗します。
通知: ユーザーは遵守していないパスワードを使用してログインできます。ポリシーに準拠していない条件が返されます。返される条件は次のとおりです。
MISSING_LOWERCASE_CHARACTERMISSING_UPPERCASE_CHARACTERMISSING_NUMERIC_CHARACTERMISSING_NON_ALPHANUMERIC_CHARACTERMINIMUM_PASSWORD_LENGTHMAXIMUM_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 に設定すると、通知モードで適用が有効になります。
適用を有効にする
パスワード ポリシーを適用する手順は次のとおりです。
- まだ行っていない場合は、メールとパスワード ログインを構成します。
プロジェクト レベルでパスワード ポリシーを適用する手順は次のとおりです。
Firebase コンソール
Firebase コンソールで、[認証の設定] ページに移動します。
[パスワード ポリシー] タブを選択します。
選択したパスワードの安全度の要件を構成します。
適用モード([必須] または [通知])と、ログイン時にパスワードのアップグレードを強制するかどうかを選択します。
[保存] をクリックします。
REST
コンソールで、`gcloud auth print-access-token` コマンドを使用して、プロジェクト ID のアクセス トークンを出力します。 Google Cloud
gcloud auth print-access-tokengcloud auth print-access-token --project=PROJECT_IDIdentity Toolkit API を使用してパスワード ポリシーを有効にします。
curl -X PATCH -d "{'passwordPolicyConfig':{'enforcementState':'ENFORCE','forceUpgradeOnSignin':true,'constraints':{'requireUppercase':true,'requireLowercase':true,'requireNonAlphanumeric':true,'requireNumeric':true,'minLength':MIN_PASSWORD_LENGTH,'maxLength':MAX_PASSWORD_LENGTH}}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=passwordPolicyConfig"次のように置き換えます。
ACCESS_TOKEN: 先ほど生成したアクセス トークンPROJECT_ID: プロジェクト IDMIN_PASSWORD_LENGTH: 必要なパスワードの最小文字数MAX_PASSWORD_LENGTH: 必要なパスワードの最大文字数
テナント レベルでパスワード ポリシーを適用する手順は次のとおりです。
REST
コンソールで、`gcloud auth print-access-token` コマンドを使用して、プロジェクト ID のアクセス トークンを出力します。 Google Cloud
gcloud auth print-access-tokengcloud auth print-access-token --project=PROJECT_IDIdentity Toolkit API を使用して、テナントのパスワード ポリシーを有効にします。
curl -X PATCH -d "{'passwordPolicyConfig':{'enforcementState':'ENFORCE','forceUpgradeOnSignin':true,'constraints':{'requireUppercase':true,'requireLowercase':true,'requireNonAlphanumeric':true,'requireNumeric':true,'minLength':MIN_PASSWORD_LENGTH,'maxLength':MAX_PASSWORD_LENGTH}}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/tenants/TENANT_ID?updateMask=passwordPolicyConfig"次のように置き換えます。
ACCESS_TOKEN: 先ほど生成したアクセス トークンPROJECT_ID: プロジェクト IDTENANT_ID: パスワード ポリシーを適用するテナントの IDMIN_PASSWORD_LENGTH: 必要なパスワードの最小文字数MAX_PASSWORD_LENGTH: 必要なパスワードの最大文字数
適用を無効にする
プロジェクト レベルでパスワード ポリシーの適用を無効にする手順は次のとおりです。
Firebase コンソール
Firebase コンソールで、[認証の設定] ページに移動します。
[パスワード ポリシー] タブを選択します。
パスワード ポリシーの適用を無効にします。
[保存] をクリックします。
REST
コンソールで、`gcloud auth print-access-token` コマンドを使用して、プロジェクト ID のアクセス トークンを出力します。 Google Cloud
gcloud auth print-access-tokengcloud auth print-access-token --project=PROJECT_IDIdentity Toolkit API を使用して、パスワード ポリシーの適用を無効にします。
curl -X PATCH -d "{'passwordPolicyConfig':{'enforcementState':'OFF'}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=passwordPolicyConfig"次のように置き換えます。
ACCESS_TOKEN: 先ほど生成したアクセス トークンPROJECT_ID: プロジェクト ID
テナント レベルでパスワード ポリシーの適用を無効にする手順は次のとおりです。
REST
コンソールで、`gcloud auth print-access-token` コマンドを使用して、プロジェクト ID のアクセス トークンを出力します。 Google Cloud
gcloud auth print-access-tokengcloud auth print-access-token --project=PROJECT_IDIdentityToolkit API を使用して、テナントのパスワード ポリシーの適用を無効にします。
curl -X PATCH -d "{'passwordPolicyConfig':{'enforcementState':'OFF'}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/tenants/TENANT_ID?updateMask=passwordPolicyConfig"次のように置き換えます。
ACCESS_TOKEN: 先ほど生成したアクセス トークンPROJECT_ID: プロジェクト IDTENANT_ID: パスワード ポリシーを無効にするテナントの ID
クライアントサイドでの適用
パスワードは、送信前にクライアント側でプロジェクトまたはテナントのパスワード ポリシーに対して検証できます。
import { getAuth, validatePassword } from 'firebase/auth';
const auth = getAuth();
auth.tenantId = TENANT-ID;
const status = await validatePassword(auth, 'password').catch((error) => {
// Password couldn't be validated.
});
const policy = status.passwordPolicy;
// Use the status and policy to show what requirements are met and which are
// missing.