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

基于Azure Foundry搭建自助AI服务:APIM订阅密钥解析问题求助

问题:APIM无法识别Bearer格式Authorization头中的订阅密钥

背景

我们基于Azure API Management Service(APIM)对接Azure Foundry(AI网关)搭建了AI权限管理流程:用户申请AI权限→管理员审批→用户获取API密钥并配置到AI工具。APIM中定义了completions等API并配置策略,开启「必须订阅」后,客户端需通过Header/Query参数传递订阅密钥。

问题现象

Postman通过Ocp-Apim-Subscription-Key或api-key头传递密钥可正常工作,但VSCode等AI工具会发送格式为Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx的Authorization头,APIM无法解析其中的密钥,导致这类请求无法被APIM内部验证机制识别,也无法在APIM Analytics中被监控到。

尝试的解决方案及调试结果

我编写了以下入站策略,试图提取密钥并重写Ocp-Apim-Subscription-Key头,期望让APIM识别该密钥,但context.Subscription?.Key始终无法更新:

<set-variable name="clientKey" value="@{
        var auth = context.Request.Headers.GetValueOrDefault("Authorization", "");
        if (auth.StartsWith("Bearer ")) {
            var token = auth.Substring(7).Trim();
            if (token != "") { return token; }
        }

        var apiKey = context.Request.Headers.GetValueOrDefault("api-key", "").Trim();
        if (apiKey != "") { return apiKey; }

        var subKey = context.Request.Headers.GetValueOrDefault("Ocp-Apim-Subscription-Key", "").Trim();
        if (subKey != "") { return subKey; }

        return "";
    }" />

<set-header name="Ocp-Apim-Subscription-Key" exists-action="override">
    <value>@((string)context.Variables["clientKey"])</value>
</set-header>

调试发现:

  • 使用以下出站策略验证,clientKey已被正确赋值:
    <return-response>
        <set-status code="200" reason="DEBUG" />
        <set-body>@((string)context.Variables["clientKey"])</set-body>
    </return-response>
    
  • 但使用以下出站策略时,context.Subscription为null:
    <return-response>
        <set-status code="200" reason="DEBUG" />
        <set-body>
           @{ return "Subscription Key=" + (context.Subscription?.Key); }
        </set-body>
    </return-response>
    

这说明context.Subscription的评估早于入站策略执行,且不会重新评估。虽然当前策略能提取密钥用于令牌限制,但无法被APIM内部机制识别。由于Azure Foundry本身支持Bearer格式的Authorization头,需要找到让APIM适配该场景的解决思路。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:05:18