Azure AD B2C自定义Role属性作为应用声明返回报错求助
解决Azure AD B2C添加自定义Role声明时的AADB2C90037错误
针对你遇到的问题,按以下步骤排查和修复:
1. 确认ClaimType定义的正确性
自定义属性在Azure AD B2C中存储时会自动添加extension_前缀,你的ClaimType定义需满足:
- Id可设为
Role(方便后续引用) - 需指定对应存储属性名
extension_Role - 添加只读配置和允许空值(避免无属性值时触发错误)
示例代码:
<ClaimType Id="Role"> <DisplayName>Role</DisplayName> <DataType>string</DataType> <UserInputType>Readonly</UserInputType> <AllowNull>true</AllowNull> </ClaimType>
2. 修正技术配置文件的输出声明映射
在AAD-UserReadUsingEmailAddress和AAD-UserReadUsingObjectId技术配置文件中,输出声明必须明确映射到存储的extension_Role属性,否则会因找不到属性报错:
<OutputClaims> <!-- 保留原有输出声明 --> <OutputClaim ClaimTypeReferenceId="Role" PartnerClaimType="extension_Role" /> </OutputClaims>
3. 检查注册流程的属性处理(可选)
由于该属性仅管理员可编辑,注册流程中需避免强制用户填写。若你的注册技术配置文件(如AAD-UserWriteUsingLogonEmail)中添加了该属性的输入声明,需立即删除,防止注册时出错。
4. 验证策略文件的语法正确性
检查修改后的TrustFrameworkExtensions.xml和signup_signin.xml是否存在XML语法错误,比如标签未闭合、ClaimType Id拼写错误等,可借助XML校验工具快速排查。
5. 确认自定义属性的存在性
登录Azure门户进入你的B2C租户,在用户属性中确认Role自定义属性已创建,且系统存储名称为extension_Role。
完成以上修改后,重新上传策略文件并测试,即可正常返回Role声明。
内容的提问来源于stack exchange,提问作者Unnie
相关产品推荐
相关产品推荐

