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

Azure AD B2C客户端凭据流:使用客户端断言替代静态密钥遇阻

Azure AD B2C Client Credentials Flow 客户端断言配置方案

核心结论

Azure AD B2C支持通过自定义策略为Client Credentials Flow配置private_key_jwt类型的客户端断言,你可以通过修改自定义策略中的AuthorizationTechnicalProfile来添加该认证方式的支持,解决当前的400错误。

具体配置步骤

  1. 更新自定义策略的AuthorizationTechnicalProfile
    在你的自定义策略XML文件中,找到对应Client Credentials Flow的TechnicalProfile(通常ID类似ClientCredentials或OAuth2ClientCredentials),修改其<Metadata>节点,添加private_key_jwt到ClientAssertionTypes列表中,并补充客户端断言相关的元数据:

    <TechnicalProfile Id="ClientCredentials">
      <DisplayName>Client Credentials Flow</DisplayName>
      <Protocol Name="OAuth2" />
      <Metadata>
        <!-- 保留原有grant_type等配置 -->
        <Item Key="grant_type">client_credentials</Item>
        <!-- 扩展支持的客户端断言类型 -->
        <Item Key="ClientAssertionTypes">client_secret_post,client_secret_basic,private_key_jwt</Item>
        <!-- 指定JWT断言的签发者(必须和客户端ID一致) -->
        <Item Key="ClientAssertionJwtIssuer">{client_id}</Item>
        <!-- 指定JWT断言的受众(必须和你的B2C token端点地址一致) -->
        <Item Key="ClientAssertionJwtAudience">https://tenant.b2clogin.com/tenant.onmicrosoft.com/b2c_1a_demo_clientcredentialsflow/oauth2/v2.0/token</Item>
      </Metadata>
      <CryptographicKeys>
        <!-- 可配置策略使用的签名密钥(若需) -->
        <Key Id="client_secret" StorageReferenceId="B2C_1A_ClientSecret" />
      </CryptographicKeys>
      <OutputClaims>
        <!-- 你的自定义声明配置 -->
        <OutputClaim ClaimTypeReferenceId="custom_claim" />
      </OutputClaims>
    </TechnicalProfile>
    
  2. 确认应用注册的公钥配置
    确保你已在B2C应用注册的「证书和密码」页面上传了对应的公钥/证书,B2C会自动使用该公钥验证客户端签名的client_assertion。

错误原因说明

你收到的HTTP 400错误,本质是当前自定义策略的AuthorizationTechnicalProfile仅配置了client_secret_post和client_secret_basic两种认证方式,未包含private_key_jwt,因此B2C无法识别并处理你发送的客户端断言请求。

关于AAD通用端点的说明

login.microsoftonline.com是Azure AD的通用令牌端点,不支持B2C自定义策略逻辑,因此只能生成标准AAD令牌,无法包含你在B2C自定义策略中定义的自定义声明。必须使用B2C自定义策略专属的b2clogin.com端点才能获取带自定义声明的令牌。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:45:55