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

Azure AD B2C注册流程中强制条款同意复选框的实现及问题

实现Azure AD B2C注册流程的必填条款与条件复选框

当然可以实现!要给Azure AD B2C的注册流程加一个必填的条款与条件复选框,咱们得结合自定义属性、用户流配置和UI定制来搞定,我一步步给你说,顺便解决你提到的两个小问题:

一、先搞定自定义属性(解决你说的找不到「Custom Attributes」的问题)

你提到在步骤5没找到「Custom Attributes」选项,这大概率是菜单入口的翻译或位置调整了——现在Azure AD B2C里对应的入口是用户属性:

  • 进入你的Azure AD B2C租户后台,左侧菜单找到「用户属性」
  • 点击「添加」,创建一个布尔型的自定义属性:
    • 名称填TermsOfServiceAccepted(这个名称要记牢,后面要用到)
    • 显示名称设为「我同意条款与条件」
    • 数据类型选「布尔值」
    • 勾选「可在用户流中使用」,然后保存

二、配置注册用户流,让属性成为必填项

接下来要把这个属性加到你的注册用户流里,确保注册时会收集这个信息:

  • 进入「用户流」,选择你正在使用的注册用户流
  • 点击「用户属性」标签页,在「收集的属性」列表里找到你刚创建的TermsOfServiceAccepted,勾选它
  • 再切换到「应用程序声明」标签页,同样把这个属性加进去(这样你的应用后续能获取用户是否同意的状态)
  • 点击「保存」完成用户流配置

三、定制UI实现复选框(解决你上传JSON无法保存的问题)

现在要把这个布尔属性渲染成必填的复选框,还要解决你上传JSON后无法保存的问题:

  1. 下载默认UI模板:
    进入用户流的「页面布局」标签页,选择「自定义页面」,点击「下载默认模板」,拿到默认的HTML和配置文件

  2. 修改HTML添加复选框:
    打开下载的HTML文件,找到注册表单的区域(比如密码字段之后),添加这段代码:

    <div class="form-group">
      <div class="checkbox">
        <label>
          <input type="checkbox" id="TermsOfServiceAccepted" name="TermsOfServiceAccepted" required>
          我同意<a href="你的条款URL" target="_blank">条款与条件</a>和<a href="你的隐私政策URL" target="_blank">隐私政策</a>
        </label>
      </div>
    </div>
    

    注意:name属性必须和你之前创建的自定义属性名称完全一致,required标签确保用户必须勾选才能提交。

  3. 解决JSON上传失败的问题:
    你上传JSON后无法保存,通常是这几个原因:

    • URL不可访问:如果你的自定义HTML存在Blob存储,要确保URL是公开可访问的,并且Blob存储的CORS规则允许Azure AD B2C访问
    • JSON语法错误:检查JSON里的引号、逗号是否正确,用在线JSON校验工具扫一遍
    • 缺失必要节点:不要删除默认JSON里的LoadUri、RecoveryUri等核心节点,只修改需要定制的部分
  4. 上传定制后的UI:
    把修改好的HTML上传到你的静态资源托管服务(比如Azure Blob存储),然后在用户流的「页面布局」里,更新对应页面的LoadUri为你的HTML地址,或者直接上传修改后的配置JSON,点击保存即可。

四、测试验证

启动用户流的「预览」功能,进入注册页面,你会看到条款与条件的复选框——不勾选的话点击「注册」会触发浏览器的必填验证,必须勾选才能继续完成注册流程。

如果是用自定义策略(而非用户流),思路是类似的:在SelfAssertedAttributeProvider节点中添加自定义布尔属性,在UI模板中渲染为必填复选框,同时在策略里添加验证规则确保该属性的值为true。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:30:21