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

如何通过主密钥或辅助密钥在Azure APIM中查询订阅?

关于Azure APIM通过订阅密钥查询订阅的方案
  • 目前Azure APIM公开的REST API、Management API中没有直接通过主/辅订阅密钥查询对应订阅实体的操作,这是因为订阅密钥属于敏感凭据,APIM的设计逻辑里未提供反向查询的公开接口,以此降低密钥泄露风险。

  • 可采用以下替代方案实现需求:

    1. 提前建立映射存储:在APIM的策略中,当订阅创建或更新时,将订阅ID、主/辅密钥、关联用户信息同步存储到外部存储(如Azure Table Storage、Cosmos DB)。后续后端收到请求中的密钥后,直接查询该存储获取对应的订阅和用户关联信息。
      • 示例APIM策略片段(订阅变更时触发存储同步):
        <policies>
          <inbound>
            <when condition="@(context.Request.Method == "PUT" || context.Request.Method == "POST")">
              <set-variable name="subscriptionInfo" value="@(new {
                Id = context.Subscription.Id,
                PrimaryKey = context.Subscription.PrimaryKey,
                SecondaryKey = context.Subscription.SecondaryKey,
                UserId = context.User.Id
              })" />
              <send-request mode="new" response-variable-name="syncResponse" timeout="20" ignore-error="false">
                <set-url>https://your-storage-service.azurewebsites.net/api/subscription-mappings</set-url>
                <set-method>POST</set-method>
                <set-header name="Content-Type" exists-action="override">
                  <value>application/json</value>
                </set-header>
                <set-body>@(JsonConvert.SerializeObject(context.Variables["subscriptionInfo"]))</set-body>
              </send-request>
            </when>
          </inbound>
        </policies>
        
    2. 基于用户关联查询:如果请求中可附带用户标识(比如JWT令牌中的用户ID),可先通过APIM Management API的GET /users/{userId}/subscriptions接口查询该用户关联的所有订阅,再验证请求中的密钥是否与订阅的主/辅密钥匹配,以此间接关联订阅与用户。
    3. Named Values映射(小量场景):若订阅数量较少,可在APIM中通过Named Values维护密钥与订阅ID的映射关系,但该方式扩展性有限,不适合大量订阅的场景。
  • 注意:所有涉及订阅密钥的存储、传输环节需确保加密处理,避免明文泄露。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:12:04