次の方法で共有


Azure Active Directory B2C のパスワードの複雑さの要件を構成する

重要

2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください

開始する前にこのページの上部にある ポリシーの種類 セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。

Azure Active Directory B2C (Azure AD B2C) では、アカウントの作成時にエンド ユーザーが指定するパスワードの複雑さの要件の変更がサポートされています。 既定では、Azure AD B2C は 強力な パスワードを使用します。 Azure AD B2C では、お客様が使用できるパスワードの複雑さを制御するための構成オプションもサポートされています。

[前提条件]

パスワードルールの適用

サインアップまたはパスワードのリセット時に、エンド ユーザーは複雑さのルールを満たすパスワードを入力する必要があります。 パスワードの複雑さのルールは、ユーザー フローごとに適用されます。 1 つのユーザー フローではサインアップ時に 4 桁の PIN が必要であり、別のユーザー フローではサインアップ時に 8 文字の文字列が必要な場合があります。 たとえば、大人用と子供用でパスワードの複雑さが異なるユーザー フローを使用できます。

パスワードの複雑さは、サインイン時に強制されることはありません。 ユーザーは、現在の複雑さの要件を満たしていないため、サインイン中にパスワードの変更を求められることはありません。

パスワードの複雑さは、次の種類のユーザー フローで構成できます。

  • ユーザー登録またはログインのユーザーフロー
  • パスワード リセットのユーザー フロー

カスタムポリシーを使用している場合は、 カスタムポリシーでパスワードの複雑さを設定できます

パスワードの複雑さを構成する

  1. Azure portal にサインインします。
  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
  3. Azure portal で、 [Azure AD B2C] を検索して選択します。
  4. ユーザーフローを選択します。
  5. ユーザー フローを選択し、 プロパティ を選択します。
  6. [パスワードの複雑さ] で、このユーザー フローのパスワードの複雑さを [シンプル]、[強力]、または [カスタム] に変更します。

比較チャート

複雑さ 説明
簡単 8 文字から 64 文字以上のパスワード。
8 文字から 64 文字以上のパスワード。 小文字、大文字、数字、記号の 4 つのうち 3 つが必要です。
習慣 このオプションでは、パスワードの複雑さのルールを最も詳細に制御できます。 カスタムの長さを設定できます。 また、番号のみのパスワード(PIN)を受け入れることもできます。

カスタムオプション

文字セット

数字のみ(ピン)または完全な文字セットを受け入れることができます。

  • 数字は 、パスワードの入力時に数字(0〜9)のみを許可します。
  • すべて で、任意の文字、数字、または記号を使用できます。

長さ

パスワードの長さ要件を制御できます。

  • 最小長 は 4 以上である必要があります。
  • 最大長 は最小長以上で、最大で 256 文字です。

文字クラス

パスワードで使用されるさまざまな文字タイプを制御できます。

  • 2 of 4: 小文字、大文字、数字 (0-9)、記号 パスワードに少なくとも 2 つの文字タイプが含まれていることを確認します。 たとえば、数字と小文字などです。

  • 3 of 4: 小文字、大文字、数字 (0-9)、記号 パスワードに少なくとも 3 つの文字タイプが含まれていることを確認します。 たとえば、数字、小文字、大文字などです。

  • 4/4: 小文字、大文字、数字 (0 から 9)、記号 は、パスワードに 4 つの文字の種類がすべて含まれていることを確認します。

    4 の 4 を要求すると、エンドユーザーの不満が生じる可能性があります。 いくつかの研究では、この要件はパスワードエントロピーを改善しないことが示されています。 NIST パスワード ガイドラインを参照してください。

パスワード条件の検証

パスワードの複雑さを設定するには、newPassword 型と reenterPasswordクレーム型条件検証の参照としてオーバーライドします。 PredicateValidations 要素は、一連の述語をグループ化して、要求の種類に適用できるユーザー入力検証を形成します。 ポリシーの拡張ファイルを開きます。 たとえば、SocialAndLocalAccounts/TrustFrameworkExtensions.xml のようにします。

  1. BuildingBlocks 要素を検索します。 要素が存在しない場合は、追加します。

  2. ClaimsSchema 要素を見つけます。 要素が存在しない場合は、追加します。

  3. newPasswordreenterPassword の要求を ClaimsSchema 要素に追加します。

    <!-- 
    <BuildingBlocks>
      <ClaimsSchema> -->
        <ClaimType Id="newPassword">
          <PredicateValidationReference Id="CustomPassword" />
        </ClaimType>
        <ClaimType Id="reenterPassword">
          <PredicateValidationReference Id="CustomPassword" />
        </ClaimType>
      <!-- 
      </ClaimsSchema>
    </BuildingBlocks>-->
    
  4. 述語 は、要求の種類の値を確認するための基本的な検証を定義し、true または false を返します。 検証は、指定されたメソッド要素と、メソッドに関連する一連のパラメーターを使用して行われます。 次の述語を BuildingBlocks 要素に追加します。これは、 </ClaimsSchema> 要素が閉じた直後です。

    <!-- 
    <BuildingBlocks>-->
      <Predicates>
        <Predicate Id="LengthRange" Method="IsLengthRange">
          <UserHelpText>The password must be between 6 and 64 characters.</UserHelpText>
          <Parameters>
            <Parameter Id="Minimum">6</Parameter>
            <Parameter Id="Maximum">64</Parameter>
          </Parameters>
        </Predicate>
        <Predicate Id="Lowercase" Method="IncludesCharacters">
          <UserHelpText>a lowercase letter</UserHelpText>
          <Parameters>
            <Parameter Id="CharacterSet">a-z</Parameter>
          </Parameters>
        </Predicate>
        <Predicate Id="Uppercase" Method="IncludesCharacters">
          <UserHelpText>an uppercase letter</UserHelpText>
          <Parameters>
            <Parameter Id="CharacterSet">A-Z</Parameter>
          </Parameters>
        </Predicate>
        <Predicate Id="Number" Method="IncludesCharacters">
          <UserHelpText>a digit</UserHelpText>
          <Parameters>
            <Parameter Id="CharacterSet">0-9</Parameter>
          </Parameters>
        </Predicate>
        <Predicate Id="Symbol" Method="IncludesCharacters">
          <UserHelpText>a symbol</UserHelpText>
          <Parameters>
            <Parameter Id="CharacterSet">@#$%^&amp;*\-_+=[]{}|\\:',.?/`~"();!</Parameter>
          </Parameters>
        </Predicate>
      </Predicates>
    <!-- 
    </BuildingBlocks>-->
    
  5. 次の述語検証を BuildingBlocks 要素に追加します。これは、 </Predicates> 要素が閉じられた直後です。

    <!-- 
    <BuildingBlocks>-->
      <PredicateValidations>
        <PredicateValidation Id="CustomPassword">
          <PredicateGroups>
            <PredicateGroup Id="LengthGroup">
              <PredicateReferences MatchAtLeast="1">
                <PredicateReference Id="LengthRange" />
              </PredicateReferences>
            </PredicateGroup>
            <PredicateGroup Id="CharacterClasses">
              <UserHelpText>The password must have at least 3 of the following:</UserHelpText>
              <PredicateReferences MatchAtLeast="3">
                <PredicateReference Id="Lowercase" />
                <PredicateReference Id="Uppercase" />
                <PredicateReference Id="Number" />
                <PredicateReference Id="Symbol" />
              </PredicateReferences>
            </PredicateGroup>
          </PredicateGroups>
        </PredicateValidation>
      </PredicateValidations>
    <!-- 
    </BuildingBlocks>-->
    

強力なパスワードを無効にする

次の技術プロファイルは、Microsoft Entra ID に対するデータの読み取りと書き込みを行う Active Directory 技術プロファイルです。 拡張ファイル内のこれらの技術プロファイルをオーバーライドします。 PersistedClaimsを使用して、強力なパスワードポリシーを無効にします。 ClaimsProviders 要素を検索します。 次のクレームプロバイダーを以下のように追加してください。

<!-- 
<ClaimsProviders>-->
  <ClaimsProvider>
    <DisplayName>Azure Active Directory</DisplayName>
    <TechnicalProfiles>
      <TechnicalProfile Id="AAD-UserWriteUsingLogonEmail">
        <PersistedClaims>
          <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration, DisableStrongPassword"/>
        </PersistedClaims>
      </TechnicalProfile>
      <TechnicalProfile Id="AAD-UserWritePasswordUsingObjectId">
        <PersistedClaims>
          <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration, DisableStrongPassword"/>
        </PersistedClaims>
      </TechnicalProfile>
    </TechnicalProfiles>
  </ClaimsProvider>
<!-- 
</ClaimsProviders>-->

ユーザー名ベースのサインイン ポリシーを使用する場合は、AAD-UserWriteUsingLogonEmail ポリシーを使用して、AAD-UserWritePasswordUsingObjectIdLocalAccountWritePasswordUsingObjectId の技術プロファイルを更新します。

ポリシー・ファイルを保存します。

ポリシーのテスト

ファイルをアップロードする

  1. Azure portal にサインインします。
  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
  3. Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。
  4. [Identity Experience Framework] を選択します
  5. [カスタムポリシー] ページで、[ ポリシーのアップロード] を選択します。
  6. [ポリシーが存在する場合は上書きする] を選択し、TrustFrameworkExtensions.xml ファイルを検索して選択します。
  7. [アップロード] を選択します。

ポリシーを実行する

  1. サインアップまたはサインイン ポリシー ( B2C_1A_signup_signin など) を開きます。
  2. [アプリケーション] で、以前に登録したアプリケーションを選択します。 トークンを表示するには、 応答 URLhttps://jwt.msが表示されます。
  3. [今すぐ実行] を選択します。
  4. [ 今すぐサインアップ] を選択し、メール アドレスを入力して、新しいパスワードを入力します。 パスワードの制限に関するガイダンスが示されています。 ユーザー情報の入力を完了し、 作成 を選択します。 返されたトークンの内容が表示されます。