Azure AD B2C身份验证时转换用户输入用户名的实现方案问询
解决方案
针对你在Azure AD B2C中需要预转换用户名的需求,可通过以下两种原生能力实现,无需额外依赖第三方服务:
1. 内置用户流实现方案
如果你使用B2C内置的标准用户流,可通过客户端JS预处理完成转换:
- 首先进入对应用户流的「属性」配置页,开启启用 JavaScript 客户端代码选项
- 在「页面布局」设置中自定义登录/注册页的HTML源码,添加表单提交监听事件,在用户点击提交后,先获取用户输入的用户名,拼接对应账号编号后再将值回填到用户名字段,最后提交表单到B2C服务端
2. 自定义策略(IEF)实现方案
如果你使用灵活性更高的自定义策略,可直接在服务端通过声明转换完成逻辑,避免客户端篡改风险:
- 在你的策略扩展文件中新增用户名拼接的声明转换规则,示例如下:
<ClaimsTransformation Id="ConcatUsernameWithAccountId" TransformationMethod="StringJoin"> <InputClaims> <!-- 用户输入的原始用户名 --> <InputClaim ClaimTypeReferenceId="inputUserName" TransformationClaimType="inputParameter1" /> <!-- 你需要追加的账号编号,可从配置或上游接口获取 --> <InputClaim ClaimTypeReferenceId="userAccountNumber" TransformationClaimType="inputParameter2" /> </InputClaims> <InputParameters> <InputParameter Id="delimiter" DataType="string" Value="" /> </InputParameters> <OutputClaims> <!-- 拼接完成的最终用户名,用于后续身份验证逻辑 --> <OutputClaim ClaimTypeReferenceId="signInName" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation>
- 在登录/注册对应的
SelfAssertedTechnicalProfile的<InputClaimsTransformations>节点中引用上述声明转换ID即可,系统会在执行身份验证逻辑前自动完成用户名转换 - 如果你需要根据用户输入的用户名先查询对应的账号编号,可在声明转换前新增
RestfulTechnicalProfile调用你自有业务服务的查询接口获取编号即可
内容的提问来源于stack exchange,提问作者CuriousLayman
相关产品推荐
相关产品推荐

