如何通过Terraform程序化配置OAuth客户端的授权重定向URI及JS源
为IAP OAuth Client配置授权重定向URI与JavaScript源
Terraform的google_iap_client资源本身不支持直接配置授权重定向URI和授权JavaScript源,这两个属性属于OAuth客户端的核心配置,需要通过Google Cloud的OAuth 2.0客户端API来修改。以下是两种可行的实现方式:
方法一:Shell脚本结合gcloud与API调用
步骤1:Terraform输出客户端ID
先在Terraform代码中添加输出,方便后续脚本获取创建好的IAP客户端ID:
resource "google_iap_client" "client" { display_name = "Test Client" brand = "gcp test" } output "iap_client_id" { value = google_iap_client.client.client_id }
步骤2:编写Shell脚本更新配置
执行Terraform apply后,运行以下脚本完成配置:
# 提取Terraform输出的客户端ID CLIENT_ID=$(terraform output -raw iap_client_id) # 获取Google Cloud访问令牌 ACCESS_TOKEN=$(gcloud auth print-access-token) # 定义要设置的重定向URI和JavaScript源 REDIRECT_URIS='["https://example.com/callback", "http://localhost:8080/callback"]' JS_ORIGINS='["https://example.com", "http://localhost:8080"]' # 调用OAuth API更新客户端配置 curl -X PATCH \ "https://oauth2.googleapis.com/v2/$CLIENT_ID" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "redirectUris": '"$REDIRECT_URIS"', "javascriptOrigins": '"$JS_ORIGINS"' }'
方法二:Terraform集成local-exec自动更新
直接在Terraform资源中添加local-exec provisioner,创建IAP客户端后自动触发API调用:
resource "google_iap_client" "client" { display_name = "Test Client" brand = "gcp test" provisioner "local-exec" { command = <<EOT ACCESS_TOKEN=$(gcloud auth print-access-token) curl -X PATCH \ "https://oauth2.googleapis.com/v2/${google_iap_client.client.client_id}" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "redirectUris": ["https://example.com/callback", "http://localhost:8080/callback"], "javascriptOrigins": ["https://example.com", "http://localhost:8080"] }' EOT } }
注意事项
- 执行操作的账号需要拥有
clientauthconfig.clients.update权限(可通过OAuth Config Editor角色赋予) - 若在CI/CD环境中运行,需确保gcloud已完成身份认证
- 当前Google OAuth客户端API的稳定版本为v2,API路径无需修改
内容的提问来源于stack exchange,提问作者adithyar24200
相关产品推荐
相关产品推荐

