共用方式為


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

這很重要

自 2025 年 5 月 1 日起,Azure AD B2C 將不再可供新客戶購買。 在我們的常見問題中深入瞭解

開始之前,請使用此頁面頂端的 [選擇原則類型] 選取器,選擇您要設定的原則類型。 Azure Active Directory B2C 提供兩種方法來定義使用者如何與您的應用程式互動:透過預先定義的使用者流程,或透過完全可設定的自訂原則。 此文章中所需的步驟隨各方法而異。

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

先決條件

強制執行密碼規則

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

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

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

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

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

設定密碼複雜度

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

比較圖表

複雜性 說明
簡單 至少 864 個字元的密碼。
強大 至少 864 個字元的密碼。 它需要在小寫、大寫、數字或符號中選擇4個中的3個。
習慣 此選項可對密碼複雜度規則提供最大的控制。 它允許設定自定義長度。 它也允許接受純數字的密碼(PIN碼)。

自訂選項

字符集

可讓您只接受數字(識別碼)或完整字元集。

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

長度

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

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

字元類別

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

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

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

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

    備註

    需要 4/4 可能會導致用戶沮喪。 一些研究顯示,這項要求並不會提高密碼熵。 請參閱 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>-->

如果您使用使用者名稱型登入原則,請使用 AAD-UserWriteUsingLogonEmail 原則更新 AAD-UserWritePasswordUsingObjectIdLocalAccountWritePasswordUsingObjectId和技術配置檔。

儲存原則檔案。

測試您的原則

上傳檔案

  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. 選取 [ 立即註冊],輸入電子郵件地址,然後輸入新的密碼。 關於密碼限制的指引已經提供。 完成輸入使用者資訊,然後選取 [ 建立]。 您應該會看到傳回之令牌的內容。