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

Azure API Management向Azure Web App认证:外部用户OAuth2.0配置咨询

实现Azure API Management外部非AD用户的OAuth2.0+订阅密钥双验证方案

核心思路

通过第三方OAuth2.0身份提供商(IDP)管理外部已审核用户的身份,在APIM中配置JWT验证确保用户身份合法且已通过审核,同时叠加订阅密钥验证完成双重校验,无需将外部用户添加为Microsoft Entra来宾用户。

具体配置步骤

1. 选择并配置外部身份提供商

选用支持OAuth2.0/OIDC的第三方IDP(如Auth0、Okta或自建身份服务),完成以下配置:

  • 在IDP中创建APIM对应的应用注册,获取客户端ID、客户端密钥
  • 配置用户注册流程,添加审核环节(仅审核通过的用户可获取有效JWT)
  • 确保IDP签发的JWT包含approved: true这类标识用户审核状态的Claim

2. 在APIM中配置OAuth2.0身份验证

进入目标APIM实例,找到需保护的API,在「设置」标签中完成:

  • 找到「OAuth 2.0」区域,点击「添加」
  • 填写IDP相关信息:
    • 名称:自定义标识(如「ExternalUserAuth」)
    • 授权端点URL:IDP的OAuth2.0授权端点
    • 令牌端点URL:IDP的令牌获取端点
    • 客户端ID/密钥:IDP中创建的应用凭证
    • 范围:按需定义(如api://external-user-access)
  • 保存配置

3. 配置APIM入站策略实现双验证

在API的「入站策略」中添加JWT验证和订阅密钥验证逻辑,示例策略代码:

<inbound>
    <!-- 验证外部IDP签发的JWT,确保用户已通过审核 -->
    <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Invalid or unauthorized token">
        <openid-config url="https://your-external-idp-domain/.well-known/openid-configuration" />
        <required-claims>
            <claim name="approved" match="any">
                <value>true</value>
            </claim>
        </required-claims>
    </validate-jwt>
    <!-- 验证APIM订阅密钥 -->
    <validate-api-key header-name="Ocp-Apim-Subscription-Key" query-parameter-name="subscription-key" />
    <base />
</inbound>

说明:

  • openid-config填写IDP的OIDC配置地址,用于自动获取公钥验证JWT签名
  • required-claims确保只有审核通过(approved: true)的用户能通过验证

4. 订阅密钥分发与用户访问流程

  • 在APIM中创建专属产品,关联需开放给外部用户的API
  • 为已通过审核的外部用户创建APIM订阅,生成对应的订阅密钥并分发
  • 用户访问流程:
    1. 在IDP完成身份认证,获取带有approved: true标识的JWT令牌
    2. 调用APIM API时,同时携带两个请求头:
      • Authorization: Bearer <JWT_TOKEN>
      • Ocp-Apim-Subscription-Key <SUBSCRIPTION_KEY>
    3. APIM依次验证JWT合法性、用户审核状态、订阅密钥有效性,全部通过则转发请求至后端服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 21:23:35