简体   繁体   English

使用 Terraform 生成 PAT Azure DevOps 令牌

[英]Generate PAT Azure DevOps tokens with Terraform

Story故事

I'm using Terraform for onboarding new Projects to Azure DevOps.我正在使用 Terraform 将新项目加入 Azure DevOps。 I wanna eliminate all manual steps except Subscription creation.我想消除除订阅创建之外的所有手动步骤。 Firstly I'm creating AAD Group, then registering App, creating Service Principal and secret.首先,我正在创建 AAD 组,然后注册应用程序,创建服务主体和机密。 After that I'm creating Azure DevOps project.之后,我将创建 Azure DevOps 项目。 And then I wanna create PAT token which will be used in this Project.然后我想创建将在这个项目中使用的 PAT 令牌。

Issue问题

I successfully generate Bearer token, but when I'm using this token to generate PAT, I'm getting error like: TF401444: Please sign-in at least once as <tenant-id>\\<clientId> in a web browser to enable access to the service.我成功生成了 Bearer 令牌,但是当我使用此令牌生成 PAT 时,出现如下错误: TF401444: Please sign-in at least once as <tenant-id>\\<clientId> in a web browser to enable access to the service.

Creating Bearer Token:创建不记名令牌:

curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
https://login.microsoftonline.com/<tenantId>/oauth2/v2.0/token \
-d 'client_id=<clientId>' \
-d 'grant_type=client_credentials' \
-d 'scope=499b84ac-1321-427f-aa17-267ca6975798/.default' \
-d 'client_secret=<application secret>'

Generating PAT token (doesn't work)生成 PAT 令牌(不起作用)

curl -X POST 'https://vssps.dev.azure.com/<organizationId>/_apis/tokens/pats?api-version=6.1-preview.1' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ${token} ' \
--data-raw '{
    "displayName":"TokenFromAPI_1",
    "scope":"app_token",
    "validTo":"2022-12-22T00:00:00.000Z",
    "allOrgs":false
}'

API permission for Application应用程序的 API 权限在此处输入图像描述

Details AFAIK there was missing the availability to create PAT via API for a long time.详细信息AFAIK 很长一段时间都缺少通过 API 创建 PAT 的可用性。 This was introduced this year if I'm not mistaken.如果我没记错的话,这是今年推出的。 I guess thats the reason why there is still not yet Terraform resource for generating PAT tokens yet.我想这就是为什么还没有用于生成 PAT 令牌的 Terraform 资源的原因。 Anyway I wanna do that via REST API for this moment.无论如何,我现在想通过 REST API 来做到这一点。

Terraform implicitly require az login to get the token information from the portal. Terraform 隐式要求 az login 从门户获取令牌信息。 Please ran the below command before running terraform plan请在运行 terraform plan 之前运行以下命令

az account get-access-token

Upon authentication, please set the respective subscription using below command身份验证后,请使用以下命令设置相应的订阅

az account set --subscription "**************************"

Run Terraform plan and apply later all setup.运行 Terraform 计划并稍后应用所有设置。

terraform plan 
terraform apply -auto-approve

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM