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

已完成Azure APIM OAuth2认证后如何实现授权配置的咨询

Azure API Management 基于AAD的OAuth2授权落地方案

前置条件

已完成内部环境中API Management(以下简称APIM)Developer Portal与AAD的OAuth 2.0认证部署


具体实现步骤

  • 配置AAD端角色声明
    进入AAD中绑定APIM的注册应用页面,添加自定义权限角色,比如区分API只读、API读写、管理员全权限等不同等级,将角色分配给相应用户/服务主体,配置完成后AAD下发的访问令牌中会自动携带roles字段,作为后续授权判断的核心依据。
  • 配置APIM授权校验策略
    进入APIM实例的策略编辑页面,可选择全局作用域或者单个API/操作作用域添加授权逻辑,先完成JWT合法性校验,再基于令牌中的角色声明做细粒度权限判断,参考策略代码如下:
    <inbound>
        <base />
        <!-- 先校验JWT令牌合法性 -->
        <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized" require-expiration-time="true" require-signed-tokens="true">
            <openid-config url="https://login.microsoftonline.com/替换为你的AAD租户ID/.well-known/openid-configuration" />
            <audiences>
                <audience>替换为你的APIM资源ID</audience>
            </audiences>
            <issuers>
                <issuer>https://sts.windows.net/替换为你的AAD租户ID/</issuer>
            </issuers>
        </validate-jwt>
        <!-- 细粒度权限校验,比如写操作要求对应角色 -->
        <choose>
            <when condition="@(context.Request.Method == "POST" || context.Request.Method == "PUT" || context.Request.Method == "DELETE")">
                <when condition="@(!context.Request.Headers.GetValueOrDefault("Authorization","").AsJwt().Claims.GetValueOrDefault("roles", string.Empty).Contains("API.Write"))">
                    <return-response>
                        <set-status code="403" reason="Forbidden" />
                        <set-body>当前账号无接口操作权限</set-body>
                    </return-response>
                </when>
            </when>
        </choose>
    </inbound>
    
  • 配置Developer Portal权限映射
    在APIM开发者门户的用户组配置页,将AAD角色和APIM门户的用户组做绑定,确保不同权限的用户登录后,仅能看到自身权限范围内的API文档、调试入口,避免越权访问入口暴露。
  • 功能验证
    分别使用不同权限等级的AAD账号发起接口请求,校验令牌合法但权限不足时返回403、权限匹配时正常请求,同时验证开发者门户的API可见范围符合预期即可。

常见问题排查

  • 令牌中无roles字段:检查AAD应用的自定义角色是否已分配给对应用户/服务主体,确认令牌请求的scope参数包含应用权限范围
  • 策略校验不生效:检查策略绑定的作用域是否覆盖目标API,确认JWT校验中的受众、签发者参数和AAD返回的令牌参数完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:45:04