在 Azure Active Directory B2C 中設定密碼的複雜度需求

開始之前,請使用 [選擇原則類型 選取器] 來選擇您要設定的原則類型。 Azure Active Directory B2C 提供兩種方法來定義使用者如何與您的應用程式互動:透過預先 定義的使用者流程 ,或透過完全可設定 的自定義原則。 本文中每個方法所需的步驟都不同。

Azure Active Directory B2C (Azure AD B2C) 支援在建立帳戶時變更使用者提供之密碼的複雜度需求。 根據預設,Azure AD B2C 會使用 密碼。 Azure AD B2C 也支援組態選項,以控制客戶可以使用的密碼複雜度。

必要條件

強制執行密碼規則

在註冊或密碼重設期間,用戶必須提供符合複雜度規則的密碼。 每個使用者流程都會強制執行密碼複雜度規則。 註冊期間可能會有一個使用者流程需要四位數的針腳,而另一個使用者流程在註冊期間需要八個字元字串。 例如,您可以針對成人使用與兒童不同的密碼複雜度的使用者流程。

登入期間絕不會強制執行密碼複雜度。 登入期間永遠不會提示使用者變更其密碼,因為它不符合目前的複雜度需求。

您可以在下列類型的使用者流程中設定密碼複雜度:

  • 註冊或登入使用者流程
  • 密碼重設使用者流程

如果您使用自定義原則,您可以在 自定義原則中設定密碼複雜度。

設定密碼複雜度

  1. 登入 Azure 入口網站
  2. 如果您有多個租使用者的存取權,請選取頂端功能表中的 設定 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
  3. 在 Azure 入口網站中,搜尋並選取 [Azure AD B2C]
  4. 選取 [ 使用者流程]。
  5. 選取使用者流程,然後按兩下 [ 屬性]。
  6. 在 [密碼複雜度] 底下,將此使用者流程的密碼複雜度變更為 [簡單]、[強式] 或 [自定義]。

比較圖表

簡化 描述
簡易 至少 864 個字元的密碼。
強式 至少 864 個字元的密碼。 它需要小寫、大寫、數位或符號的 4 個中的 3 個。
自訂 此選項可對密碼複雜度規則提供最大的控制。 它允許設定自定義長度。 它也允許接受僅限數字的密碼(針腳)。

自訂選項

字元集

可讓您只接受數位(pins)或完整的字元集。

  • 數位在 輸入密碼時只允許數位 (0-9)。
  • 全部 都允許任何字母、數位或符號。

長度

可讓您控制密碼的長度需求。

  • 最小長度 必須至少為 4。
  • 最大長度 必須大於或等於最小長度,而且最多可以是 256 個字元。

字元類別

可讓您控制密碼中使用的不同字元類型。

  • 2/4:小寫字元、大寫字元、數位(0-9),符號 可確保密碼至少包含兩個字元類型。 例如,數位和小寫字元。

  • 4 中的 3:小寫字元、大寫字元、數位 (0-9),符號 可確保密碼至少包含三個字元類型。 例如,數位、小寫字元和大寫字元。

  • 4/4:小寫字元、大寫字元、數位(0-9),符號 可確保密碼包含所有字元類型。

    注意

    需要 4/4 可能會導致用戶沮喪。 一些研究表明,這項需求不會改善密碼 entropy。 請參閱 NIST 密碼指導方針

密碼述詞驗證

若要設定密碼複雜度,請使用述詞驗證的參考覆寫 newPasswordreenterPassword 宣告類型。 PredicateValidations 元素會將一組述詞分組,以形成可套用至宣告類型的使用者輸入驗證。 開啟原則的延伸模組檔案。 例如: SocialAndLocalAccounts/TrustFrameworkExtensions.xml

  1. 搜尋 BuildingBlocks 元素。 如果專案不存在,請加以新增。

  2. 找出 ClaimsSchema 元素。 如果專案不存在,請加以新增。

  3. newPassword將和 reenterPassword 宣告新增至 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>-->
    

停用強密碼

下列技術配置檔是 Active Directory技術配置檔,可讀取和寫入數據至 Microsoft Entra ID。 覆寫延伸模組檔案中的這些技術配置檔。 使用 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>-->

如果您使用使用者名稱型登入原則,請使用 DisableStrongPassword 原則更新 AAD-UserWriteUsingLogonEmailAAD-UserWritePasswordUsingObjectId和技術LocalAccountWritePasswordUsingObjectId配置檔

儲存原則檔案。

測試您的原則

上傳檔案

  1. 登入 Azure 入口網站
  2. 如果您有多個租使用者的存取權,請選取頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
  3. 選擇 Azure 入口網站 左上角的 [所有服務],然後搜尋並選取 [Azure AD B2C]。
  4. 選取 [ 身分識別體驗架構]。
  5. 在 [自定義原則] 頁面上,選取 [ 上傳原則]。
  6. 選取 [覆寫原則是否存在],然後搜尋並選取 TrustFrameworkExtensions.xml 檔案。
  7. 選取上傳

執行原則

  1. 開啟註冊或登入原則,例如 B2C_1A_signup_signin
  2. 針對 [ 應用程式],選取您先前註冊的應用程式。 若要檢視權杖, 回覆 URL 應該會顯示 https://jwt.ms
  3. 選取 [ 立即執行]。
  4. 選取 [ 立即註冊],輸入電子郵件地址,然後輸入新的密碼。 密碼限制會提供指引。 完成輸入使用者資訊,然後選取 [ 建立]。 您應該會看到傳回之令牌的內容。

下一步