Azure B2C:如何在密码重置流程后显示自定义HTML页面?
Azure B2C:如何在密码重置流程后显示自定义HTML页面?
我明白你已经成功阻止了密码重置后的自动登录,但卡在跳转自定义HTML页面这一步——别担心,咱们通过调整编排流程和完善技术配置就能解决这个问题。下面是具体的操作步骤:
一、确认自定义页面的技术配置文件和内容定义
首先确保你已经正确配置了显示自定义HTML页面的技术配置文件,以及对应的内容定义:
1. 配置自定义页面的技术配置文件
在你的策略中添加一个专门用于显示完成页面的技术配置,它的作用就是渲染你的自定义HTML:
<TechnicalProfile Id="SelfAsserted-CustomResetCompleted"> <DisplayName>密码重置完成页面</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> <Metadata> <!-- 关联你定义的内容ID --> <Item Key="ContentDefinitionReferenceId">api.customresetcompleted</Item> <!-- 隐藏不需要的按钮,根据你的页面需求调整 --> <Item Key="setting.showContinueButton">false</Item> <Item Key="setting.showCancelButton">false</Item> </Metadata> <!-- 可以传递需要在页面显示的用户信息,比如用户名 --> <InputClaims> <InputClaim ClaimTypeReferenceId="signInName" /> </InputClaims> <!-- 不需要输出新声明,仅用于显示页面 --> <OutputClaims /> <!-- 使用空会话管理,避免创建自动登录会话 --> <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" /> </TechnicalProfile>
2. 关联内容定义
确保你的内容定义中已经注册了这个自定义页面的URI(注意页面要托管在B2C可访问的位置):
<ContentDefinitions> <ContentDefinition Id="api.customresetcompleted"> <LoadUri>你的自定义HTML页面的托管地址</LoadUri> <RecoveryUri>~/common/default_page_error.html</RecoveryUri> <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.0</DataUri> <Metadata> <Item Key="DisplayName">自定义密码重置完成页面</Item> </Metadata> </ContentDefinition> </ContentDefinitions>
二、修改密码重置旅程的编排步骤
接下来需要调整编排流程,在密码重置完成后,调用我们上面定义的自定义页面技术配置,替换掉原来的自动登录步骤:
- 找到密码重置旅程中的
OrchestrationSteps,定位到完成密码重置的步骤(通常是调用LocalAccountWritePasswordUsingObjectId的步骤) - 在该步骤之后添加一个新的编排步骤,用于显示自定义页面:
<OrchestrationSteps> <!-- 前面的步骤:验证邮箱、输入新密码等 --> <OrchestrationStep Order="3" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="SaveNewPassword" TechnicalProfileReferenceId="LocalAccountWritePasswordUsingObjectId" /> </ClaimsExchanges> </OrchestrationStep> <!-- 新增步骤:调用自定义完成页面的技术配置 --> <OrchestrationStep Order="4" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="DisplayCustomCompletedPage" TechnicalProfileReferenceId="SelfAsserted-CustomResetCompleted" /> </ClaimsExchanges> </OrchestrationStep> <!-- 注意:移除或禁用原来的自动登录步骤(比如Type="SendClaims"或调用登录技术配置的步骤) --> </OrchestrationSteps>
三、关键注意事项
- 会话管理:必须在自定义页面的技术配置中使用
SM-Noop,这是B2C内置的空会话管理配置,不会创建用户会话,彻底避免自动登录的情况。 - 页面渲染:自定义HTML页面需要嵌入B2C要求的必要脚本,确保页面能被B2C正确加载和渲染,比如用于处理声明的脚本。
- 声明传递:如果需要在自定义页面显示用户信息,比如用户名,通过
InputClaims传递后,可以在HTML中用{claim:signInName}这样的语法引用。
完成以上配置后,重新上传你的B2C策略,测试密码重置流程,就能看到在密码重置成功后,自动跳转到你定义的自定义HTML页面了。
备注:内容来源于stack exchange,提问作者Raman Lodhi
相关产品推荐
相关产品推荐

