使用 Microsoft Entra ID(Azure AD)为 M2M 请求授权
Microsoft Entra ID 的前身是 Azure Active Directory,是 Microsoft 提供的云端身份与访问管理服务。除了对用户进行身份认证,它还可以向应用颁发访问 Token,使后台服务、计划任务和自动化程序无需最终用户登录即可调用 API。
OAuth 2.0 客户端凭证流程专为此类机器到机器(M2M)通信而设计。Apache APISIX 可以在代理请求前验证每个 Token 的签名、颁发者、受众和所分配的应用权限,从而保护目标 API。
本指南介绍如何为此 M2M 场景配置 Microsoft Entra ID 和 APISIX。一个 Microsoft Entra 应用代表受保护的 API,另一个代表调用服务。调用服务获得应用权限,并使用客户端密钥请求访问 Token。APISIX 使用 Microsoft Entra ID 的 JSON Web Key Set(JWKS)在本地验证 Token,并在将请求转发到示例上游之前移除身份认证数据。
前置条件
- 安装 Docker。
- 安装 cURL 和 jq。
- 按照入门指南使用 Docker 启动 APISIX。
- 拥有 Microsoft Entra 租户的访问权限,以及注册应用、创建应用角色和授予租户级管理员同意的权限。Cloud Application Administrator 或权限更高的角色即可满足要求。
- 如果计划使用 ADC,请先安装并配置 ADC。
- 如果使用 Admin API 示例且启用了身份验证,请将管理员角色的密钥导出为
ADMIN_API_KEY。请在deployment.admin.admin_key下配置该密钥。Docker 快速入门为了便于本地评估而禁用了身份验证;生产环境中请保持启用。
配置 Microsoft Entra ID
分别为受保护的 API 和 M2M 客户端创建应用注册。这样,Microsoft Entra ID 就能为正确的 API 受众颁发 Token,并且只包含授予该客户端的应用权限。
注册受保护的 API
登录 Microsoft Entra 管理中心,注册代表受保护 API 的应用:
- 选择 Entra ID → App registrations → New registration。
- 输入
APISIX Protected API作为应用名称。 - 在 Supported account types 下选择 Single tenant only。
- 将 Redirect URI 留空,因为此应用不用于用户登录。
- 选择 Register。
在应用的 Overview 页面记录 Application (client) ID 和 Directory (tenant) ID。