如何修改AD B2C自定义策略JwtIssuer ClaimsProvider移除Refresh Token?
AD B2C自定义策略禁用Refresh Token报错解决方案
问题原因
AD B2C的JWT签发器技术配置(JwtIssuer)在OAuth类流程中,无论是否实际返回刷新令牌,都强制要求配置issuer_refresh_token_user_identity_claim_type元数据项,作为刷新令牌关联用户身份的唯一标识声明,缺少该配置就会抛出你遇到的报错。
解决步骤
- 第一步:补全必填的元数据项
在JwtIssuer的<Metadata>节点中添加issuer_refresh_token_user_identity_claim_type配置,取值选择用户的唯一标识声明,通常用内置的objectId即可。 - 第二步:添加禁用刷新令牌的配置
要彻底不返回刷新令牌,需要将刷新令牌的生命周期设为0,添加两个对应的元数据项:refresh_token_lifetime_secs设为0,禁用单次刷新令牌有效期rolling_refresh_token_lifetime_secs设为0,禁用滚动刷新令牌最长有效期
修改后的完整配置如下:
<ClaimsProvider> <DisplayName>Token Issuer</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="JwtIssuer"> <DisplayName>JWT Issuer</DisplayName> <Protocol Name="None" /> <OutputTokenFormat>JWT</OutputTokenFormat> <Metadata> <Item Key="client_id">{service:te}</Item> <Item Key="SendTokenResponseBodyWithJsonNumbers">true</Item> <Item Key="AuthenticationContextReferenceClaimPattern">None</Item> <Item Key="token_lifetime_secs">3600</Item> <!-- 1 H --> <Item Key="id_token_lifetime_secs">3600</Item> <!-- 新增必填配置 --> <Item Key="issuer_refresh_token_user_identity_claim_type">objectId</Item> <!-- 禁用刷新令牌配置 --> <Item Key="refresh_token_lifetime_secs">0</Item> <Item Key="rolling_refresh_token_lifetime_secs">0</Item> </Metadata> <CryptographicKeys> <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" /> </CryptographicKeys> <InputClaims /> <OutputClaims /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
验证注意事项
- 上传自定义策略时需遵循层级顺序,先上传基础策略文件,再上传扩展策略、依赖方策略
- 测试时使用浏览器无痕模式,避免旧策略缓存、Cookie缓存导致的验证异常
内容的提问来源于stack exchange,提问作者magnetiktank
相关产品推荐
相关产品推荐

