如何用Terraform在Azure客户端应用中创建密钥并解决字段弃用问题
解决AzureAD应用密钥创建的弃用问题及APIM授权服务器集成
修正Terraform创建应用密钥的代码
在azuread provider 2.42.0版本中,azuread_application_password资源的application_object_id字段已被弃用,替代参数为application_id,且该参数需要传入应用的Object ID(而非客户端ID)。你之前的代码错误地将客户端ID赋值给了原字段,现在修正为:
resource "azuread_application_password" "example" { application_id = data.azuread_application.example.object_id }
这段代码会为你在Azure门户注册的应用创建新的客户端密钥,密钥值可通过azuread_application_password.example.value直接引用,你当前APIM授权服务器配置中的client_secret引用逻辑是正确的。
直接使用门户中已创建的密钥
如果不想通过Terraform生成新密钥,而是复用Azure门户中已存在的客户端密钥,可以通过data.azuread_application_password数据源读取:
data "azuread_application_password" "existing_key" { application_id = data.azuread_application.example.object_id key_id = "YOUR_EXISTING_KEY_ID" # 从Azure门户的应用密钥列表中获取对应密钥的ID }
然后在APIM授权服务器中替换为该数据源的密钥值:
client_secret = data.azuread_application_password.existing_key.value
APIM授权服务器的配置验证
你当前的azurerm_api_management_authorization_server配置中:
client_id使用data.azuread_application.example.application_id是正确的(这是应用的客户端ID)client_secret无论是引用Terraform创建的密钥还是门户已有的密钥,都能正常用于OAuth2授权流程,无需额外调整,只要确保密钥处于有效状态即可。
内容的提问来源于stack exchange,提问作者Panda
相关产品推荐
相关产品推荐

