如何在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
相关产品推荐
相关产品推荐

