Azure CLI를 사용하여 Microsoft Entra 토큰을 발급하고 Azure DevOps REST API를 호출합니다. Entra 액세스 토큰은 1시간 동안만 지속되므로 빠른 일회성 작업에 적합합니다. Azure CLI를 사용하여 직접 또는 서비스 주체를 대신하여 사용자 토큰을 획득할 수 있습니다.
필수 조건
카테고리 |
요구 사항 |
Entra 테넌트 및 구독 서비스 |
구독이 액세스하려는 Azure DevOps 조직에 연결된 테넌트에 연결되어 있는지 확인합니다. 테넌트 또는 구독 ID를 모르는 경우, Azure Portal에서 확인할 수 있습니다. |
Azure 명령줄 인터페이스 (CLI) |
Azure CLI를 다운로드하여 설치합니다. |
Entra 앱 |
(서비스 주체에 대해 인증하는 경우) Entra 애플리케이션을 만들고 앱 클라이언트 ID 및 클라이언트 암호를 준비합니다. |
엔트라 토큰을 직접 획득
az login
명령을 사용하여 Azure CLI에 로그인하고 화면의 지침을 따릅니다.
이러한 bash 명령을 사용하여 로그인한 사용자에 대한 올바른 구독을 설정합니다. Azure 구독 ID가 액세스하려는 Azure DevOps 조직에 연결된 테넌트에 연결되어 있는지 확인합니다. 구독 ID를 모르는 경우, Azure Portal에서 찾을 수 있습니다.
az account set -s <subscription-id>
Azure DevOps 리소스 ID az account get-access-token
과 499b84ac-1321-427f-aa17-267ca6975798
명령을 사용하여 Microsoft Entra ID 액세스 토큰을 생성합니다.
az account get-access-token \
--resource 499b84ac-1321-427f-aa17-267ca6975798 \
--query "accessToken" \
-o tsv
Connect-AzAccount
명령을 사용하여 Azure PowerShell에 로그인하고 화면의 지침을 따릅니다.
이러한 PowerShell 명령을 사용하여 로그인한 사용자에 대한 올바른 구독을 설정합니다. Azure 구독 ID가 액세스하려는 Azure DevOps 조직에 연결된 테넌트에 연결되어 있는지 확인합니다. 구독 ID를 모르는 경우, Azure Portal에서 찾을 수 있습니다.
Set-AzContext -Subscription <subscriptionID>
Azure DevOps 리소스 ID Get-AzAccessToken
과 499b84ac-1321-427f-aa17-267ca6975798
명령을 사용하여 Microsoft Entra ID 액세스 토큰을 생성합니다.
Get-AzAccessToken -ResourceUrl '499b84ac-1321-427f-aa17-267ca6975798'
서비스 주체에 대한 토큰 획득
-
az devops login
명령을 사용하여 Azure CLI에 서비스 주체로 로그인합니다.
- 화면의 지침에 따라 로그인을 완료합니다.
# To authenticate a service principal with a password or cert:
az login --service-principal -u <app-id> -p <password-or-cert> --tenant <tenant>
# To authenticate a managed identity:
az login --identity
- 다음 명령을 입력하여 로그인한 서비스 주체에 대해 올바른 구독을 설정합니다.
az account set -s <subscription-id>
- Azure DevOps 리소스 ID:
az account get-access-token
및 499b84ac-1321-427f-aa17-267ca6975798
을 사용하여 Microsoft Entra ID 액세스 토큰을 생성합니다.
$accessToken = az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query "accessToken" --output tsv
비고
토큰 생성을 위해 리소스 URI가 아닌 Azure DevOps 애플리케이션 ID를 사용합니다.
- 이제 일반적인 명령을 사용할
az cli
수 있습니다. 헤더에 Bearer
토큰으로 전달하여 Azure DevOps API를 호출해 보겠습니다.
$apiVersion = "7.1-preview.1"
$uri = "https://dev.azure.com/${yourOrgname}/_apis/projects?api-version=${apiVersion}"
$headers = @{
Accept = "application/json"
Authorization = "Bearer $accessToken"
}
Invoke-RestMethod -Uri $uri -Headers $headers -Method Get | Select-Object -ExpandProperty value ` | Select-Object id, name