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

如何在基于OIDC的ADB2C跨租户联合认证中添加查询参数

解决ADB2C跨租户联合认证中授权端点添加自定义查询参数的问题

方法1:直接指定带参数的授权端点(跳过自动发现)

如果不需要依赖OpenID Connect自动发现机制,可直接在技术配置文件的Metadata里指定完整的授权端点URL,包含所需的查询参数:

<ClaimsProvider>
  <Domain>your-tenant-domain.com</Domain>
  <DisplayName>目标ADB2C租户</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="TargetB2C-OIDC">
      <DisplayName>目标ADB2C租户登录</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <Metadata>
        <!-- 移除自动发现端点配置 -->
        <!-- <Item Key="OpenIdConnectDiscoveryEndpoint">https://target-tenant.b2clogin.com/target-tenant.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1A_signup_signin</Item> -->
        <!-- 直接指定带自定义参数的授权端点 -->
        <Item Key="authorization_endpoint">https://target-tenant.b2clogin.com/target-tenant.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1A_signup_signin&customParam=requiredValue</Item>
        <Item Key="client_id">你的目标租户应用ID</Item>
        <Item Key="response_types">code</Item>
        <Item Key="scope">openid profile</Item>
        <Item Key="response_mode">form_post</Item>
        <Item Key="HttpBinding">POST</Item>
        <!-- 按需添加其他元数据(如token_endpoint等) -->
      </Metadata>
      <!-- 其余配置(输入输出声明、密钥等)保持不变 -->
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

方法2:使用ExtraQueryParameters元数据(保留自动发现)

若想继续依赖OpenID Connect自动发现,可通过ExtraQueryParameters元数据项追加自定义参数,必须注意XML中&符号要转义为&amp;,否则会触发格式错误:

<TechnicalProfile Id="TargetB2C-OIDC">
  <Protocol Name="OpenIdConnect" />
  <Metadata>
    <Item Key="OpenIdConnectDiscoveryEndpoint">https://target-tenant.b2clogin.com/target-tenant.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1A_signup_signin</Item>
    <Item Key="client_id">你的目标租户应用ID</Item>
    <!-- 追加自定义查询参数,&转义为&amp; -->
    <Item Key="ExtraQueryParameters">customParam1=value1&amp;customParam2=value2</Item>
    <Item Key="response_types">code</Item>
    <Item Key="scope">openid profile</Item>
    <!-- 其他元数据 -->
  </Metadata>
</TechnicalProfile>

备选方案:改用OAuth2协议提供者

你考虑的OAuth2协议提供者方案完全可行,Azure AD B2C的授权端点支持OAuth2授权码流程,配置时直接在authorization_endpoint中携带所需参数即可:

<TechnicalProfile Id="TargetB2C-OAuth2">
  <DisplayName>目标ADB2C租户登录</DisplayName>
  <Protocol Name="OAuth2" />
  <Metadata>
    <Item Key="authorization_endpoint">https://target-tenant.b2clogin.com/target-tenant.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1A_signup_signin&customParam=requiredValue</Item>
    <Item Key="token_endpoint">https://target-tenant.b2clogin.com/target-tenant.onmicrosoft.com/oauth2/v2.0/token?p=B2C_1A_signup_signin</Item>
    <Item Key="client_id">你的目标租户应用ID</Item>
    <Item Key="scope">openid profile</Item>
    <Item Key="response_type">code</Item>
    <Item Key="response_mode">form_post</Item>
  </Metadata>
  <!-- 其余配置(输入输出声明、密钥等) -->
</TechnicalProfile>

关键注意事项

  • 方法2中必须转义XML中的&符号,这是你之前直接添加参数导致XML格式错误的核心原因。
  • 无论用哪种方法,都要确保目标ADB2C租户的应用注册已允许你的源租户应用发起授权请求,并且权限配置正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:02:03