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

Azure B2C:注册自定义策略中能否使用生成的临时密码?

Azure B2C自定义策略注册时系统生成随机密码的实现方案

是的,仅通过Azure B2C自定义策略就能实现注册账户时使用系统生成的随机密码,不用依赖Graph API。具体实现步骤如下:

  • 定义生成随机密码的声明转换
    先在自定义策略的ClaimsSchema里添加一个存储密码的声明,再通过GenerateRandomString类型的声明转换生成符合要求的随机密码。示例代码如下:

    <ClaimsSchema>
      <ClaimType Id="newPassword">
        <DisplayName>New Password</DisplayName>
        <DataType>string</DataType>
        <UserHelpText>System-generated password</UserHelpText>
      </ClaimType>
    </ClaimsSchema>
    
    <ClaimsTransformations>
      <ClaimsTransformation Id="GenerateRandomPassword" TransformationMethod="GenerateRandomString">
        <InputParameters>
          <InputParameter Id="randomGeneratorType" DataType="string" Value="DEFAULT" />
          <InputParameter Id="length" DataType="int" Value="12" />
          <!-- 包含大小写字母、数字和特殊字符,满足密码复杂度要求 -->
          <InputParameter Id="characterSet" DataType="string" Value="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*" />
        </InputParameters>
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="newPassword" TransformationClaimType="outputClaim" />
        </OutputClaims>
      </ClaimsTransformation>
    </ClaimsTransformations>
    
  • 创建调用转换的技术配置文件
    写一个专门的技术配置文件,调用上面的声明转换来生成密码:

    <TechnicalProfile Id="GenerateRandomPasswordProfile">
      <DisplayName>Generate Random Password</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="newPassword" />
      </OutputClaims>
      <OutputClaimsTransformations>
        <OutputClaimsTransformation ReferenceId="GenerateRandomPassword" />
      </OutputClaimsTransformations>
    </TechnicalProfile>
    
  • 修改注册用户旅程流程
    在注册的用户旅程中,先添加一个步骤调用上述技术配置文件生成密码,再把生成的密码传递给创建用户的技术配置文件,同时移除原本需要用户输入密码的字段:

    <!-- 在用户旅程的编排步骤中添加生成密码的步骤 -->
    <OrchestrationStep Order="1" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="GeneratePassword" TechnicalProfileReferenceId="GenerateRandomPasswordProfile" />
      </ClaimsExchanges>
    </OrchestrationStep>
    
    <!-- 修改注册用的技术配置文件,使用生成的密码 -->
    <TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
      <!-- 保留原有其他配置 -->
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="newPassword" PartnerClaimType="password" />
      </InputClaims>
      <!-- 删除原本的密码输入字段配置,避免用户输入 -->
    </TechnicalProfile>
    
  • 关键注意点

    • 生成的密码必须符合你Azure B2C租户设置的密码复杂度规则,否则会创建用户失败。
    • 如果需要把密码通知给用户,可以在流程里加邮件发送步骤,把密码作为内容包含在邮件里,注意要通过安全渠道发送。
    • 这个方案适合不需要用户设置初始密码的场景,比如管理员批量创建用户、系统自动注册账户等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:15:53