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

如何配置Azure API Management默认拒绝所有请求仅允许指定API?

最优配置方案:Azure APIM 默认拒绝所有请求,特定API放行

一、全局默认拒绝配置(替代你的validate-jwt方案)

直接在**All APIs级别(全局策略)**添加return-response策略,无条件返回403拒绝请求。这种方式比检查不存在的JWT角色更高效(无需解析JWT),逻辑也更直观。

全局策略代码:

<policies>
    <inbound>
        <base />
        <return-response>
            <set-status code="403" reason="Forbidden" />
            <set-body>{"message": "Access denied by default policy"}</set-body>
        </return-response>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

二、特定API的放行配置

对于需要允许有效JWT请求的API,在该API(或具体操作)的策略中添加JWT验证逻辑,并且不要调用<base />——这样会跳过全局的默认拒绝策略,仅让通过JWT验证的请求流向后端。

特定API策略示例:

<policies>
    <inbound>
        <!-- 验证JWT的有效性、签名、声明等 -->
        <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Invalid or missing JWT token">
            <openid-config url="https://your-tenant-domain/.well-known/openid-configuration" />
            <!-- 按需添加必要的声明验证,比如角色、受众等 -->
            <required-claims>
                <claim name="roles" match="any">
                    <value>authorized-api-role</value>
                </claim>
                <claim name="aud">
                    <value>your-api-audience</value>
                </claim>
            </required-claims>
        </validate-jwt>
        <!-- 注意:此处不添加<base />,避免执行全局的拒绝策略 -->
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

三、方案优势对比

你原来用validate-jwt检查deny_all角色的方案存在两个明显问题:

  1. 性能浪费:所有请求都要解析JWT,哪怕是无需放行的请求;
  2. 逻辑不直观:其他维护人员看到策略时会疑惑为什么要检查一个不存在的角色。

而新方案的优势:

  • 性能更优:默认请求直接返回403,无需解析任何请求内容;
  • 逻辑清晰:全局策略明确是默认拒绝,特定API策略明确是放行条件;
  • 灵活性高:可在API级别或操作级别精细控制放行范围,无需修改全局策略。

四、额外注意事项

  • 策略执行顺序:全局inbound策略优先执行,若子级(API/操作)策略不调用<base />,则不会触发全局的拒绝逻辑;
  • 错误区分:全局拒绝返回403(禁止访问),JWT验证失败返回401(未授权),便于前端区分处理;
  • 精细控制:如果同一个API下仅部分操作需要放行,可仅在对应操作的策略中配置上述逻辑,其余操作自动继承全局拒绝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 23:04:58