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

Terraform:如何向Azure现有应用注册添加Web重定向URI

解决AzureAD应用注册添加Web重定向URI的Terraform配置问题

要在现有AzureAD应用注册中添加新的重定向URI,你不能直接通过data块修改(data块仅用于读取资源状态),需要用azuread_application资源块接管现有应用的管理,再合并新旧URI列表。以下是具体实现步骤:

1. 修正URI列表的获取方式

你当前输出的web.*.redirect_uris是嵌套列表结构(外层列表对应web块的集合,内层是具体的URI列表),要拿到现有URI的一维列表,需要取web数组的第一个元素(单个应用注册的web配置仅一组):

data "azuread_application" "example_app" {
  display_name = "Appication_Registration"
}

# 验证现有URI的一维列表
output "existing_redirect_uris" {
  value = data.azuread_application.example_app.web[0].redirect_uris
}

2. 用resource块接管并更新应用注册

创建azuread_application资源块,将现有应用导入Terraform管理(避免重新创建),并通过concat合并新旧URI:

resource "azuread_application" "example_app" {
  display_name   = data.azuread_application.example_app.display_name
  application_id = data.azuread_application.example_app.application_id
  object_id      = data.azuread_application.example_app.object_id

  web {
    redirect_uris = concat(
      data.azuread_application.example_app.web[0].redirect_uris,
      [
        "https://customer02.domain.com/signin-microsoft",
        "https://customer02.domain.com/page/signin-microsoft",
      ]
    )
    # 保留原有web块的其他配置(如logout_uris等,若存在)
    logout_uris = data.azuread_application.example_app.web[0].logout_uris
  }

  # 保留应用的其他原有配置,如required_resource_access、reply_urls等
}

3. 导入现有应用到Terraform状态

因为应用已存在,需先执行导入命令将其纳入Terraform管理:

terraform import azuread_application.example_app <应用的object_id>

你可以从Azure Portal的应用注册概述页面获取object_id,或通过Azure CLI命令查询:

az ad app show --display-name "Appication_Registration" --query id -o tsv

4. 执行部署验证

导入完成后,执行terraform plan查看变更计划,确认新URI会被添加,再执行terraform apply完成更新。

关键说明

  • 必须保留应用原有所有配置项(如application_id、object_id、其他web配置、API权限等),否则Terraform会尝试删除未声明的配置。
  • concat函数要求传入参数均为一维列表,需确保现有URI和新URI都是一维结构,避免嵌套列表导致错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:22:31