Azure AD B2C注册流程中取消按钮触发错误问题咨询
处理Azure AD B2C注册取消时的
AADB2C90091错误 这个问题其实是AD B2C的标准反馈,AADB2C90091就是用来标识用户主动取消了自断言表单(也就是你说的注册信息填写流程),本质上不是“异常错误”,只是系统把用户的取消操作以错误参数的形式返回给了应用。咱们可以从两个层面来优化用户体验:
一、应用端直接处理错误(推荐,更灵活)
当你的应用收到回调URL里的error=access_denied,且error_description包含AADB2C90091时,不要把原始的错误信息抛给用户。可以做这些处理:
- 跳回登录/注册入口页面,给个友好提示:“你已取消注册流程,若需要可以重新发起注册”
- 或者直接展示登录页面,不提示额外信息,让用户自行选择下一步操作
举个简单的前端处理示例(伪代码):
const urlParams = new URLSearchParams(window.location.hash.substring(1)); const error = urlParams.get('error'); const errorDesc = urlParams.get('error_description'); if (error === 'access_denied' && errorDesc.includes('AADB2C90091')) { // 跳转到登录页 window.location.href = '/login'; // 或者展示友好提示 document.getElementById('error-message').textContent = '你已取消注册,可重新尝试'; }
二、在自定义B2C策略中配置取消跳转
如果你想让B2C直接处理这个取消操作,不返回错误参数给应用,可以修改自定义策略的配置:
- 打开你的SignUpSignIn自定义策略XML文件
- 在
<RelyingParty>节点下添加UserJourneyBehaviors配置,指定当出现AADB2C90091错误时直接跳转回你的应用页面:
<RelyingParty> <DefaultUserJourney ReferenceId="SignUpOrSignIn" /> <UserJourneyBehaviors> <ErrorResponseOverride> <Errors> <Error ErrorType="AADB2C90091" ResponseType="Redirect" /> </Errors> </ErrorResponseOverride> </UserJourneyBehaviors> <!-- 保留原有的ClaimsProvider等配置 --> </RelyingParty>
- 另外,你也可以在自断言技术配置(比如注册用的
LocalAccountSignUpWithLogonEmail)里添加取消按钮的跳转URL:
<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail"> <Metadata> <!-- 其他元数据 --> <Item Key="CancelUrl">https://your-app-domain.com/login</Item> </Metadata> <!-- 其他配置 --> </TechnicalProfile>
这样配置后,用户点击取消按钮时,会直接跳转到你指定的页面,不会再返回包含错误参数的URL。
总结一下:这个“错误”是AD B2C的正常行为,核心是优化用户体验,要么在应用端拦截处理,要么在策略里配置跳转,选哪种看你的场景需求就好。
内容的提问来源于stack exchange,提问作者Lucky
相关产品推荐
相关产品推荐

