You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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>

二、修改密码重置旅程的编排步骤

接下来需要调整编排流程,在密码重置完成后,调用我们上面定义的自定义页面技术配置,替换掉原来的自动登录步骤:

  1. 找到密码重置旅程中的OrchestrationSteps,定位到完成密码重置的步骤(通常是调用LocalAccountWritePasswordUsingObjectId的步骤)
  2. 在该步骤之后添加一个新的编排步骤,用于显示自定义页面:
<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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 10:48:08