Azure B2C中为idToken添加sid失败的技术求助
解决Azure AD自定义策略下sid可选声明不生效问题
问题背景
已在应用清单中配置sid的idToken可选声明,但令牌中未出现该声明;使用自定义策略后,所有可选声明均无变化,需sid实现子域间SSO。
关键原因
使用Azure AD B2C自定义策略时,应用清单内的可选声明配置不会生效,必须通过自定义策略文件显式声明并传递该字段。
具体解决步骤
- 添加sid声明定义:在策略的
<ClaimsSchema>节点下新增声明类型<ClaimType Id="sid"> <DisplayName>Session ID</DisplayName> <DataType>string</DataType> <AdminHelpText>用户当前会话的标识符</AdminHelpText> </ClaimType> - 从目录服务获取sid:在读取用户信息的技术配置文件(如
AAD-UserReadUsingObjectId)中添加输出声明<OutputClaim ClaimTypeReferenceId="sid" PartnerClaimType="sid" /> - 将sid纳入idToken:在签发JWT的技术配置文件(通常为
JwtIssuer)中添加输出声明<OutputClaim ClaimTypeReferenceId="sid" /> - 校验用户旅程:确保上述技术配置文件在用户旅程的编排步骤中被正确调用,声明可在流程中传递
验证方式
发布更新后的自定义策略,重新获取idToken,通过JWT解码工具检查令牌内容,确认sid声明已存在。
提示:若使用标准Azure AD应用注册(非B2C自定义策略),应用清单的配置通常会直接生效,但自定义策略会覆盖该逻辑,必须通过策略文件配置。
内容的提问来源于stack exchange,提问作者ruffen
相关产品推荐
相关产品推荐

