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

Azure API Service已勾选订阅必填,为何调用时仍无需API密钥?

解决APIM强制订阅密钥验证的配置步骤

以下是你需要检查和配置的几个关键点:

  • 确认调用的是APIM的API端点,而非直接访问App Service
    很多时候出现这种情况是因为你直接请求了App Service的原始URL,绕开了APIM的验证。你需要使用APIM提供的API网关地址(格式一般是https://<你的APIM名称>.azure-api.net/<API路径>)来调用,而不是App Service的*.azurewebsites.net地址。

  • 检查API的所有操作是否都启用了订阅必填
    即使在API级别勾选了「Subscription Required」,个别操作可能被单独取消了该设置。进入APIM的API详情页,切换到「设计」标签,逐个检查每个操作的设置,确保每个操作都继承了API级别的订阅必填配置,或者单独勾选了该选项。

  • 确保API已关联到APIM产品
    订阅密钥是和APIM的「产品」绑定的,如果你的API没有添加到任何产品中,APIM不会对其进行订阅验证。进入APIM的「产品」页面,选择对应的产品(比如默认的「Starter」或「Unlimited」),在「API」标签下添加你的API,保存后再测试。

  • 检查APIM的入站策略是否包含订阅验证
    勾选「Subscription Required」后,APIM应该自动添加<validate-subscription-key>策略到入站流程中,但如果策略被修改过,可能会丢失这个验证步骤。进入API的「设计」标签,点击「代码编辑器」,检查入站策略部分是否存在类似以下的代码:

    <validate-subscription-key header-name="Ocp-Apim-Subscription-Key" query-parameter-name="subscription-key" />
    

    如果没有,手动添加这段代码并保存。

  • 确认订阅的状态为「Active」
    虽然你已经创建了订阅密钥,但如果订阅状态是「Disabled」或「Expired」,验证逻辑可能异常。进入APIM的「订阅」页面,找到你创建的订阅,确认其状态为「Active」。

完成以上配置后,重新用Postman调用APIM的API端点,不携带订阅密钥应该会返回401 Unauthorized或403 Forbidden的错误,携带正确的密钥才能正常访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:07:20