Azure CLI を使用して Microsoft Entra トークンを発行し、Azure DevOps REST API を呼び出します。 Entra アクセス トークンは 1 時間しか使用できないため、1 回限りの簡単な操作に最適です。 Azure CLI を使用して、自分または サービス プリンシパルの代わりにユーザー トークンを取得できます。
[前提条件]
カテゴリ |
要求事項 |
Entra テナントとサブスクリプション |
サブスクリプションが、アクセスしようとしている Azure DevOps 組織に接続されているテナントに関連付けられていることを確認します。 テナントまたはサブスクリプション ID がわからない場合は、 Azure portal で確認できます。 |
Azure CLI |
Azure CLI をダウンロードしてインストールします。 |
Entra アプリ |
(サービス プリンシパルの認証の場合)Entra アプリケーションを作成し、アプリ クライアント ID とクライアント シークレットを準備します。 |
自分で Entra トークンを取得する
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