如何创建无需验证的Azure AD B2C手机号注册及登录流程?
实现Azure AD B2C手机号+密码注册(无强制验证)与登录流程
核心前提
默认用户流程强制要求手机号验证,无法直接修改,必须通过**自定义策略(Identity Experience Framework)**实现需求。
一、注册流程配置(无强制手机号验证)
基于起始包创建自定义策略
从Microsoft官方的自定义策略起始包(如SocialAndLocalAccounts)入手,在此基础上修改,避免从零构建的复杂度。调整用户属性收集规则
在TrustFrameworkBase.xml中,确认mobilePhone被定义为可收集的用户属性,且不设置为"必须验证"类型。示例片段:<ClaimType Id="mobilePhone"> <DisplayName>Mobile Phone</DisplayName> <DataType>string</DataType> <UserHelpText>Your mobile phone number</UserHelpText> <UserInputType>TextBox</UserInputType> <!-- 移除或注释掉验证规则 --> <!-- <Restriction> <Pattern RegularExpression="^[0-9]{10,15}$" HelpText="Enter a valid mobile phone number"/> </Restriction> --> </ClaimType>修改注册页面与流程逻辑
- 在
TrustFrameworkLocalization.xml中,更新注册表单的文本提示,明确为"手机号+密码"注册,删除所有与"验证手机号"相关的提示语。 - 在
TrustFrameworkExtensions.xml中,修改注册用的技术配置文件,移除触发手机号验证的步骤。例如,将原有的PhoneFactor-InputOrVerify替换为仅收集手机号的配置,无需调用短信验证端点。
- 在
更新用户旅程
调整注册用户旅程,确保收集完手机号、密码等信息后,直接执行用户创建操作,跳过任何手机号验证的步骤。
二、手机号+密码登录流程配置
配置手机号作为登录标识符
在TrustFrameworkExtensions.xml中,修改登录技术配置文件,允许用户输入手机号,将其与用户目录中的mobilePhone属性进行匹配。调整认证逻辑
添加基于手机号的登录ClaimsProvider,结合密码验证逻辑,无需额外的短信验证步骤。示例核心逻辑片段:<ClaimsProvider> <DisplayName>Local Account</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="LocalAccountSigninWithPhone"> <DisplayName>Phone Number SignIn</DisplayName> <Protocol Name="OpenIdConnect"/> <Metadata> <Item Key="UserMessageIfClaimsPrincipalDoesNotExist">We can't seem to find your account</Item> <Item Key="UserMessageIfInvalidPassword">Your password is incorrect</Item> </Metadata> <InputClaims> <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="username" DefaultValue="{OIDC:LoginHint}"/> <InputClaim ClaimTypeReferenceId="password"/> </InputClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="objectId"/> <OutputClaim ClaimTypeReferenceId="mobilePhone"/> </OutputClaims> <ValidationTechnicalProfiles> <ValidationTechnicalProfile ReferenceId="login-NonInteractive"/> </ValidationTechnicalProfiles> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>更新登录用户旅程
在登录用户旅程中添加手机号+密码的登录选项,让用户可以选择用手机号替代邮箱/用户名进行登录。
关键注意事项
- 测试时使用自定义策略的专属测试链接,确认注册流程无需验证手机号即可完成,登录流程可通过手机号+密码正常认证。
- 若后续需要补充手机号验证,可在用户登录后添加可选验证步骤,或在特定场景下触发验证流程,不影响当前的注册登录逻辑。
- 确保
mobilePhone属性在用户注册时被正确写入Azure AD B2C用户目录,否则登录时无法匹配用户。
内容的提问来源于stack exchange,提问作者Evi
相关产品推荐
相关产品推荐

