メインコンテンツまでスキップ

パスワードポリシー

Logto では、パスワードの作成や更新方法によってパスワードポリシーの適用方法が異なります:

パスワードポリシーの設定​

新規ユーザーやパスワードを更新するユーザーに対して、パスワードの強度要件を強制するパスワードポリシーを設定できます。コンソール > セキュリティ > パスワードポリシー でパスワードポリシーの設定を行ってください。

  1. 最小パスワード長:パスワードに必要な最小文字数を設定します。(NIST は少なくとも 8 文字 を推奨)
  2. 必要な文字種の最小数:パスワードに必要な文字種の最小数を設定します。利用可能な文字種は以下の通りです:
    1. 大文字:(A-Z)
    2. 小文字:(a-z)
    3. 数字:(0-9)
    4. 記号:(!"#$%&'()\*+,-./:;<>=?@[]^\_`|{}~ )
  3. 漏洩履歴チェック:この設定を有効にすると、過去にデータ漏洩で公開されたパスワードを拒否します。(Have I Been Pwned により提供)
  4. 繰り返しチェック:この設定を有効にすると、同じ文字が繰り返されるパスワードを拒否します。(例:"11111111" や "password123")
  5. ユーザー情報チェック:この設定を有効にすると、ユーザー名、メールアドレス、電話番号などのユーザー情報を含むパスワードを拒否します。
  6. カスタムワード:パスワードに含めたくないカスタムワード(大文字小文字を区別しない)のリストを指定できます。

パスワード有効期限​

パスワード有効期限を設定すると、一定日数ごとにユーザーにパスワードのリセットを求めることができます。また、特定のユーザーのパスワードを手動で期限切れにすることも可能です(例:漏洩が判明した場合など)。

このポリシーは、ユーザーがパスワードサインインで正しいパスワードを入力した後にのみチェックされます。認証コード、ソーシャルサインイン、SSO、パスキーでサインインするユーザーには影響しません。

パスワード有効期限の有効化​

コンソール > セキュリティ > パスワードポリシー で パスワード有効期限 カードを見つけてください:

  1. パスワード有効期限を有効にする をオンにします。
  2. パスワード有効期間(日数) を 1 ~ 9999 日の間で設定します。
  3. 変更を保存します。

このトグルは、サインイン体験に パスワード再設定 方法(メールまたは電話)と有効なコネクターが少なくとも 1 つある場合にのみ有効になります。ユーザーはこのフローでのみ期限切れパスワードをリセットできるためです。同じ理由で、ポリシー有効時はパスワード再設定をサポートする最後のメールまたは SMS コネクターを削除できません。サインアップ時にメールアドレスや電話番号を必須にしていない場合、一部のユーザーはリセットコードを受け取れない可能性があるため、サインアップ時に収集することを検討してください。

Logto は、ユーザーのパスワードが最後に設定または変更された日時を記録します。そのパスワードが有効期間と同じだけ古くなると、次回のパスワードサインイン時にリセットを求められます。パスワード変更日時が記録されていないユーザーは、ポリシー有効化時点から計測されるため、有効化しても全員のパスワードが一斉に期限切れになることはありません。ポリシーをオフにして再度オンにすると、この開始時刻がリセットされます。

ユーザーが新しいパスワードを設定するとき(パスワード再設定、アカウント API、または Management API 経由)、パスワードの有効期間はリセットされ、手動の期限切れも解除されます。

ユーザーのパスワードを手動で期限切れにする​

パスワード有効期限ポリシーが有効な場合、特定のユーザーに次回サインイン時にパスワードリセットを強制できます:

  • コンソール:コンソール > ユーザー管理 でユーザー詳細ページを開き、パスワード横の 期限切れ をクリックして操作を確認します。このボタンはユーザーがパスワードを持っている場合のみ表示されます。

  • Management API:次のボディで PATCH /api/users/{userId}/password/expiration を呼び出します:

    {
    "isExpired": true
    }

ポリシーが有効でない場合、API は 400 とエラーコード sign_in_experiences.password_expiration_not_enabled を返し、コンソールの 期限切れ ボタンも無効になります。

よくあるケースは、パスワードが漏洩したことが判明した場合です。期限切れにすることで、ユーザーは新しいパスワードを設定して再度サインインする前に、認証コードでメールアドレスや電話番号の所有を証明する必要があります。すべてのユーザーに定期的なパスワード変更を強制せず、手動でのみ期限切れにしたい場合は、有効期間を 3650 日など長めに設定してポリシーを有効にしてください。

パスワードを期限切れにしても、既存のセッションからユーザーがサインアウトされることはありません。即時にアクセスを遮断したい場合は、ユーザーのアクティブセッション や 認可済みサードパーティアプリ も取り消してください。

エンドユーザーの画面イメージ​

ユーザーが期限切れパスワードでサインインすると、正しいパスワード入力後に「パスワードの有効期限が切れています。サインインするにはリセットが必要です。」というメッセージのモーダルが表示されます。パスワードをリセット をクリックすると、識別子が入力済みのパスワード再設定フローに遷移します。メールや電話に送信されたコードで認証し新しいパスワードを設定すれば、再度サインインできます。

体験 API で独自のサインイン UI を構築している場合、パスワード検証リクエストはエラーコード password.expired(HTTP 422)で失敗します。このエラーを検知したら、ユーザーをパスワードリセットフローに誘導してください。

パスワード準拠チェック​

Logto でパスワードポリシーを更新した後も、既存ユーザーは現在のパスワードでサインインできます。新規作成アカウントのみが更新後のポリシーに従う必要があります。

より強力なセキュリティを強制するには、POST /api/sign-in-exp/default/check-password API を利用して、ユーザーのパスワードがデフォルトのサインイン体験で定義された現在のポリシーに準拠しているか確認できます。準拠していない場合は、アカウント API を使ったカスタムフローでパスワード更新を促してください。

ユーザー管理 サインアップとサインイン アカウント設定(アカウント API) パスワードポリシー設計ガイド