在 Azure Active Directory B2C 中設定密碼的複雜度需求
開始之前,請使用 [選擇原則類型 選取器] 來選擇您要設定的原則類型。 Azure Active Directory B2C 提供兩種方法來定義使用者如何與您的應用程式互動:透過預先 定義的使用者流程 ,或透過完全可設定 的自定義原則。 本文中每個方法所需的步驟都不同。
Azure Active Directory B2C (Azure AD B2C) 支援在建立帳戶時變更使用者提供之密碼的複雜度需求。 根據預設,Azure AD B2C 會使用 強 密碼。 Azure AD B2C 也支援組態選項,以控制客戶可以使用的密碼複雜度。
必要條件
- 建立使用者流程 ,讓使用者可以註冊並登入您的應用程式。
- 註冊 Web 應用程式。
- 完成開始使用 Active Directory B2C 中的自定義原則中的 步驟
- 註冊 Web 應用程式。
強制執行密碼規則
在註冊或密碼重設期間,用戶必須提供符合複雜度規則的密碼。 每個使用者流程都會強制執行密碼複雜度規則。 註冊期間可能會有一個使用者流程需要四位數的針腳,而另一個使用者流程在註冊期間需要八個字元字串。 例如,您可以針對成人使用與兒童不同的密碼複雜度的使用者流程。
登入期間絕不會強制執行密碼複雜度。 登入期間永遠不會提示使用者變更其密碼,因為它不符合目前的複雜度需求。
您可以在下列類型的使用者流程中設定密碼複雜度:
- 註冊或登入使用者流程
- 密碼重設使用者流程
如果您使用自定義原則,您可以在 自定義原則中設定密碼複雜度。
設定密碼複雜度
- 登入 Azure 入口網站。
- 如果您有多個租使用者的存取權,請選取頂端功能表中的 設定 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
- 在 Azure 入口網站中,搜尋並選取 [Azure AD B2C]。
- 選取 [ 使用者流程]。
- 選取使用者流程,然後按兩下 [ 屬性]。
- 在 [密碼複雜度] 底下,將此使用者流程的密碼複雜度變更為 [簡單]、[強式] 或 [自定義]。
比較圖表
簡化 | 描述 |
---|---|
簡易 | 至少 8 到 64 個字元的密碼。 |
強式 | 至少 8 到 64 個字元的密碼。 它需要小寫、大寫、數位或符號的 4 個中的 3 個。 |
自訂 | 此選項可對密碼複雜度規則提供最大的控制。 它允許設定自定義長度。 它也允許接受僅限數字的密碼(針腳)。 |
自訂選項
字元集
可讓您只接受數位(pins)或完整的字元集。
- 數位在 輸入密碼時只允許數位 (0-9)。
- 全部 都允許任何字母、數位或符號。
長度
可讓您控制密碼的長度需求。
- 最小長度 必須至少為 4。
- 最大長度 必須大於或等於最小長度,而且最多可以是 256 個字元。
字元類別
可讓您控制密碼中使用的不同字元類型。
2/4:小寫字元、大寫字元、數位(0-9),符號 可確保密碼至少包含兩個字元類型。 例如,數位和小寫字元。
4 中的 3:小寫字元、大寫字元、數位 (0-9),符號 可確保密碼至少包含三個字元類型。 例如,數位、小寫字元和大寫字元。
4/4:小寫字元、大寫字元、數位(0-9),符號 可確保密碼包含所有字元類型。
注意
需要 4/4 可能會導致用戶沮喪。 一些研究表明,這項需求不會改善密碼 entropy。 請參閱 NIST 密碼指導方針
密碼述詞驗證
若要設定密碼複雜度,請使用述詞驗證的參考覆寫 newPassword
和reenterPassword
宣告類型。 PredicateValidations 元素會將一組述詞分組,以形成可套用至宣告類型的使用者輸入驗證。 開啟原則的延伸模組檔案。 例如: SocialAndLocalAccounts/
TrustFrameworkExtensions.xml
。
搜尋 BuildingBlocks 元素。 如果專案不存在,請加以新增。
找出 ClaimsSchema 元素。 如果專案不存在,請加以新增。
newPassword
將和reenterPassword
宣告新增至 ClaimsSchema 元素。<!-- <BuildingBlocks> <ClaimsSchema> --> <ClaimType Id="newPassword"> <PredicateValidationReference Id="CustomPassword" /> </ClaimType> <ClaimType Id="reenterPassword"> <PredicateValidationReference Id="CustomPassword" /> </ClaimType> <!-- </ClaimsSchema> </BuildingBlocks>-->
述詞會定義基本驗證,以檢查宣告類型的值,並傳回 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">@#$%^&*\-_+=[]{}|\\:',.?/`~"();!</Parameter> </Parameters> </Predicate> </Predicates> <!-- </BuildingBlocks>-->
將下列述詞驗證新增至 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-UserWriteUsingLogonEmail
、 AAD-UserWritePasswordUsingObjectId
和技術LocalAccountWritePasswordUsingObjectId
配置檔。
儲存原則檔案。
測試您的原則
上傳檔案
- 登入 Azure 入口網站。
- 如果您有多個租使用者的存取權,請選取頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
- 選擇 Azure 入口網站 左上角的 [所有服務],然後搜尋並選取 [Azure AD B2C]。
- 選取 [ 身分識別體驗架構]。
- 在 [自定義原則] 頁面上,選取 [ 上傳原則]。
- 選取 [覆寫原則是否存在],然後搜尋並選取 TrustFrameworkExtensions.xml 檔案。
- 選取上傳。
執行原則
- 開啟註冊或登入原則,例如 B2C_1A_signup_signin。
- 針對 [ 應用程式],選取您先前註冊的應用程式。 若要檢視權杖, 回覆 URL 應該會顯示
https://jwt.ms
。 - 選取 [ 立即執行]。
- 選取 [ 立即註冊],輸入電子郵件地址,然後輸入新的密碼。 密碼限制會提供指引。 完成輸入使用者資訊,然後選取 [ 建立]。 您應該會看到傳回之令牌的內容。
下一步
- 瞭解如何 在 Azure Active Directory B2C 中設定密碼變更。
- 深入瞭解 IEF 參考中的述詞 和 述詞Validations 元素。