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

Azure API Management中OAuth2.0实现是否合规?求入站策略建议

使用Azure API Management保护后端API的OAuth流程验证与建议

我参照视频操作,用Azure API Management保护后端API,按步骤执行后流程无法运行,添加额外步骤才让OAuth流程正常工作。现在想确认这种OAuth流程实现方式是否正确,另外根据相关文章,我应该添加inbound policy但还没做,求建议。

已执行的步骤

  • 在Azure AD中添加后端应用
  • 进入应用清单,将accessTokenAcceptedVersion更新为2并保存,为后端应用设置appId URI并添加权限范围(scope)
  • 为后端API启用身份验证,在“重定向URI”中,在后端API URL后追加/.auth/login/aad/callback
  • 回到托管后端API的App Service,进入「身份验证」>「添加身份提供商」,选择微软作为身份提供商,勾选“现有应用注册”选项,其余保持默认完成添加
  • 此时后端API已配置为安全状态
  • 注册客户端应用
  • 授予权限后,进入客户端应用清单,将accessTokenAcceptedVersion改为2
  • 进入「API权限」>「添加权限」,切换到「我的API」标签页,选择后端应用并勾选对应范围,点击「添加权限」
  • 在客户端应用的「证书和密码」中,点击「新建客户端密码」,填写描述后完成添加

视频未提及的额外步骤

  • 在客户端应用的「概览」>「终结点」中记录令牌(token)和授权(authorize)终结点
  • 打开API Management,选择「OAuth 2.0 + OpenID Connect」,点击「+ 添加」按钮
  • 进入APIM的「API」> 目标API >「设置」>「安全」,将用户授权方式选为OAuth2.0单选按钮

流程正确性验证与建议

  1. 流程整体方向正确,但缺少关键的APIM入站策略(inbound policy)配置,这是初始流程失效的核心原因之一
  2. 必须添加的入站策略:在APIM的目标API中配置validate-jwt策略,用于验证客户端传入的JWT令牌的有效性,包括签名、受众(audience)、颁发者(issuer)、权限范围等。示例策略如下:
<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Invalid token.">
    <openid-config url="https://login.microsoftonline.com/{tenant-id}/v2.0/.well-known/openid-configuration" />
    <required-claims>
        <claim name="aud">
            <value>{后端应用的appId URI}</value>
        </claim>
        <claim name="scp">
            <value>{后端API的权限范围}</value>
        </claim>
    </required-claims>
</validate-jwt>
  1. 补充验证点:
    • 确保后端应用的appId URI与APIM策略中aud参数完全一致
    • 客户端请求令牌时,必须指定正确的scope参数,值为{后端appId URI}/{scope名称}
    • 确认客户端应用的权限已完成管理员同意(如果是租户级权限)
  2. 你添加的额外步骤中配置APIM的OAuth2.0关联是正确的,但这一步仅让APIM识别OAuth身份验证方式,必须配合validate-jwt策略才能真正实现令牌有效性校验,否则APIM只是标记需要OAuth,不会实际拦截无效请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:50:41