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

在Azure APIM中配置第三方API的client_id/secret并生成客户凭证的问题

Azure APIM配置第三方API凭证及客户专属凭证方案

可行性确认

完全可行。Azure APIM支持多组第三方API凭证的映射配置,同时可以为每组API生成独立的专属访问凭证提供给客户,实现一一对应的访问控制。

解决401错误:配置客户提供的client_id和client_secret

你需要将客户的凭证配置为APIM后端的认证信息,并通过策略将凭证传递给第三方API,步骤如下:

  1. 为每组API创建独立后端

    • 进入你的APIM实例,选中目标API(建议将4组API分别导入为独立的APIM API)
    • 切换到「后端」标签页,点击「添加」
    • 填写后端名称(如「客户API组1」),在「凭据」区域选择对应认证方式:
      • 如果第三方API用OAuth2客户端凭证流:输入client_id和client_secret,并填写令牌端点、资源URI等信息
      • 如果第三方API直接通过请求头验证client_id/client_secret:可暂时跳过凭据填写,后续通过策略添加头信息
    • 保存后端配置
  2. 配置策略传递凭证
    回到API的「设计」标签页,编辑入站/出站策略,根据第三方API的认证方式添加对应逻辑:

    • 若为OAuth2客户端凭证流,添加oauth2-client-credentials策略自动获取并传递令牌:
      <oauth2-client-credentials
        token-refresh-offset="300"
        resource="https://第三方API的资源URI"
        client-id="客户提供的client_id"
        client-secret="客户提供的client_secret"
        grant-type="client_credentials"
        token-endpoint="https://第三方API的令牌端点URL"
      />
      
    • 若为直接传递client_id/client_secret到请求头,添加set-header策略:
      <set-header name="client_id" exists-action="override">
        <value>客户提供的client_id</value>
      </set-header>
      <set-header name="client_secret" exists-action="override">
        <value>客户提供的client_secret</value>
      </set-header>
      
  3. 测试验证
    在APIM的「测试」标签页发起请求,若仍返回401,检查:

    • client_id/client_secret是否输入正确
    • 策略配置是否匹配第三方API的认证要求
    • 后端地址是否指向正确的第三方API端点

生成客户专属凭证(对应4组API)

通过APIM的「产品+订阅」功能为每组API生成独立的专属密钥,步骤如下:

  1. 创建对应4组API的产品

    • 进入APIM的「产品」标签页,点击「+ 添加」
    • 填写产品名称(如「客户API组1访问权限」),设置状态为「已发布」
    • 在「API」标签页,将对应组的APIM API添加到该产品中,保存配置
    • 重复此步骤创建4个产品,分别对应4组API
  2. 为客户分配专属订阅密钥

    • 若需要为客户创建独立用户:进入「用户」标签页,添加客户用户信息(可发送邀请邮件)
    • 进入对应产品的「订阅」标签页,点击「+ 添加」
    • 选择目标客户用户,系统会自动生成「主键」和「副键」
    • 将此密钥提供给客户,客户调用APIM API时,需在请求头中携带:Ocp-Apim-Subscription-Key: 专属密钥
  3. 添加访问控制策略(可选)
    为确保只有持有对应产品密钥的请求能访问API,可在API的入站策略中添加validate-subscription-key验证:

    <validate-subscription-key header-name="Ocp-Apim-Subscription-Key" query-parameter-name="subscription-key" required="true">
      <api-name>目标API名称</api-name>
      <product-name>对应产品名称</product-name>
    </validate-subscription-key>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 04:35:33