Azure B2C如何在访问令牌中返回无extension_前缀的自定义声明
Azure AD B2C自定义策略:移除访问令牌中自定义声明的extension_前缀
核心修改文件说明
需要调整LocalAccounts入门包中的两个核心文件:
TrustFrameworkExtensions.xml:负责配置声明类型、用户存储映射逻辑SignUpOrSignin.xml:依赖方策略,定义访问令牌最终输出的声明名称
分步修改指南
1. 配置声明类型与用户存储映射(TrustFrameworkExtensions.xml)
1.1 声明类型定义(你已完成此步骤,确认节点位置即可)
确保<ClaimType>节点位于<ClaimsSchema>节点下:
<ClaimsSchema> <ClaimType Id="extension_fhirUser"> <DisplayName>fhirUser</DisplayName> <DataType>string</DataType> <UserHelpText>The fully qualified FHIR resource id associated with the user. (e.g Patient Resource)</UserHelpText> </ClaimType> </ClaimsSchema>
1.2 读取用户信息时包含该声明
找到<TechnicalProfile Id="AAD-UserReadUsingObjectId">,在其<OutputClaims>节点中添加:
<OutputClaim ClaimTypeReferenceId="extension_fhirUser" />
此步骤确保用户登录时,系统从Azure AD B2C用户存储中读取该自定义属性。
1.3 注册时收集该声明(可选,若需用户注册时填写)
找到<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">,在其<InputClaims>节点添加输入声明:
<InputClaim ClaimTypeReferenceId="extension_fhirUser" />
同时在<OutputClaims>节点添加:
<OutputClaim ClaimTypeReferenceId="extension_fhirUser" />
此步骤确保用户注册时提交的该属性会被写入用户存储。
2. 定义访问令牌输出的无前缀声明(SignUpOrSignin.xml)
在<RelyingParty>节点下的<OutputClaims>中保留你的配置(格式正确即可):
<OutputClaim ClaimTypeReferenceId="extension_fhirUser" PartnerClaimType="fhirUser" />
这里的PartnerClaimType指定了访问令牌中显示的无前缀声明名称fhirUser。
3. 验证与测试
- 确认Azure AD B2C租户中已创建自定义属性
extension_fhirUser(可通过Azure门户「用户属性」界面添加) - 将修改后的XML文件重新上传到Azure B2C租户
- 通过授权流测试,检查访问令牌中是否包含无前缀的
fhirUser声明
内容的提问来源于stack exchange,提问作者Rakshit Shinde
相关产品推荐
相关产品推荐

