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

如何在Azure AD B2C自定义策略中提取联邦IdP Access Token的自定义声明

Azure AD B2C自定义策略:提取外部IdP Access Token中的自定义声明

我正在用Azure AD B2C自定义策略配置基于OIDC的SSO流程,允许用户通过联邦身份提供商(IdP)的凭据登录下游应用,目的是在B2C向下游应用提供令牌前执行复杂业务逻辑。当前流程能正常将用户重定向到外部IdP完成登录,也能返回下游应用及关联声明,但有一个仅存在于外部IdP返回给B2C的Access Token(而非ID Token)中的自定义声明,我找不到提取它的方法,没法在B2C用户旅程中使用,也无法传递给下游应用。

通过查看Application Insights日志,已确认B2C确实收到了ID Token和Access Token,日志示例如下:

"TESTtechnicalprofile": {
    "ContentType": "Jwt",
    "Created": "2022-10-15T07:37:45.8678974Z",
    "Key": "TESTtechnicalprofile",
    "Persistent": true,
    "Value": "eyJhb..."
},
"TESTtechnicalprofileaccess_token": {
    "ContentType": "Unspecified",
    "Created": "2022-10-15T07:37:45.8678974Z",
    "Key": "TESTtechnicalprofileaccess_token",
    "Persistent": false,
    "Value": "eyJhb..."
},

令牌负载的通用格式如下:

// ID Token
{
    "<可提取的自定义声明名称>": "自定义声明值",
    "iss": ...,
    ...
}

// Access Token
{
    "<无法提取的自定义声明名称>": "自定义声明值",
    "iss": ...,
    ...
}

我可以通过映射Partner Claim Type成功提取ID Token中的声明,示例配置如下:

<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="<ID Token中包含邮箱的声明名称>" />

但这个方法对Access Token中的声明无效,如果在PartnerClaimType中引用Access Token内的自定义声明名称,B2C会直接省略该声明,推测是提取失败。

我已经能成功将整个Access Token作为声明提取出来,但不确定是否可以在B2C策略内部解码这个令牌并提取其中的声明。虽然可以让下游应用自行处理,但我的用户旅程业务逻辑必须在B2C生成最终令牌前使用这个声明。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:20:33