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

如何通过Terraform为APIM开发者门户启用Azure Active Directory(AAD)身份验证

解答

先给你明确拆解这个问题:你提到的那篇文档只能帮你完成APIM实例的基础部署,没法覆盖AAD身份认证开发者门户和将AAD用户纳入APIM开发者体系的完整需求。至于你写的Terraform代码,已经搭好了核心基础,但还缺几个关键环节才能实现你的目标。

下面详细说明:

1. 关于你提到的APIM创建步骤

那篇文档的作用是快速部署一个APIM实例,但完全没涉及身份提供者配置、开发者门户登录规则这类内容,所以你需要在它的基础上补充额外配置才行。

2. 现有Terraform代码的价值

你写的代码已经完成了三个核心资源的配置:

  • 资源组:APIM的基础部署容器
  • APIM实例:核心服务主体
  • AAD身份提供者:这是让开发者门户支持AAD登录的关键前提

但光有这些还不够——你还需要把具体的AAD用户加入到APIM的开发者列表里,否则用户就算能通过AAD登录,也没有对应的开发者权限访问门户内的API资源和功能。

3. 需要补充的Terraform资源

(1)添加单个AAD用户为APIM开发者

你需要新增azurerm_api_management_user资源,把目标AAD用户的Object ID关联到APIM中:

resource "azurerm_api_management_user" "aad_developer" {
  resource_group_name = azurerm_resource_group.example.name
  api_management_name = azurerm_api_management.example.name
  email               = "dev-user@your-tenant.com"
  first_name          = "Jane"
  last_name           = "Smith"
  user_id             = "aad-jane-smith" # 自定义一个唯一的用户标识ID

  identity {
    provider = "Aad"
    id       = "00000000-0000-0000-0000-000000000000" # 替换为目标AAD用户的Object ID
  }
}

(2)(可选)通过AAD组批量同步用户

如果你有多个AAD用户需要添加,直接关联AAD组会更高效——组内所有用户会自动获得APIM开发者权限,无需逐个添加:

# 先创建关联AAD组的APIM组
resource "azurerm_api_management_group" "aad_dev_group" {
  resource_group_name = azurerm_resource_group.example.name
  api_management_name = azurerm_api_management.example.name
  name                = "aad-developers"
  display_name        = "AAD开发者组"
  type                = "External"

  # 替换为你的目标AAD组Object ID
  external_id = "/providers/Microsoft.AAD/groups/00000000-0000-0000-0000-000000000000"
}

# (可选)把单个用户加入组,方便统一管理权限
resource "azurerm_api_management_user_group" "user_in_group" {
  api_management_name = azurerm_api_management.example.name
  resource_group_name = azurerm_resource_group.example.name
  user_id             = azurerm_api_management_user.aad_developer.user_id
  group_name          = azurerm_api_management_group.aad_dev_group.name
}

(3)(可选)配置开发者门户登录规则

虽然创建AAD身份提供者后,APIM会自动把它加到开发者门户的登录选项里,但如果你想禁用其他登录方式(比如本地账号),可以用azurerm_api_management_portal_configuration来配置:

resource "azurerm_api_management_portal_configuration" "example" {
  resource_group_name = azurerm_resource_group.example.name
  api_management_name = azurerm_api_management.example.name

  authentication {
    enabled = true
    providers {
      aad {
        enabled = true
      }
      # 如果要禁用本地账号登录,把下面的enabled设为false
      basic {
        enabled = false
      }
    }
  }
}

最后总结

你的现有代码是正确的基础,但必须补充添加AAD用户到APIM开发者列表的步骤,才能让用户真正用AAD凭据登录并使用开发者门户。如果有批量用户的需求,用AAD组同步会更高效。

内容的提问来源于stack exchange,提问作者devops-admin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 21:58:09