OAuth 2.0 を使用して REST API へのアクセスを承認する

Azure DevOps Services

アプリがユーザー名とパスワードを要求し続けないように、REST API アクセスのために Web アプリ ユーザーを認証する方法について説明します。

Note

  • 次のガイダンスは、Azure DevOps Server で OAuth 2.0 がサポートされていないため、Azure DevOps Services ユーザーを対象としています。 クライアント ライブラリは、Azure DevOps Server機能を拡張するために特別に構築された一連のパッケージです。 オンプレミス ユーザーの場合は、クライアント ライブラリ、Windows 認証、または個人用アクセス トークン (AT) を使用して、ユーザーに代わって認証することをお勧めします。
  • 詳細については、C# OAuth GitHub サンプル参照してください。

OAuth 2.0 について

Azure DevOps Services では、OAuth 2.0 プロトコルを使用してユーザーのアプリを承認し、アクセス トークンを生成します。 アプリケーションから REST API を呼び出すときは、このトークンを使用してください。 Azure DevOps Services API を呼び出すときは、対応するユーザーのアクセス トークンを使用します。 アクセス トークンには有効期限があります。有効期限が切れている場合はアクセス トークンを更新してください。

Process to get authorization.

使用可能な OAuth モデル

OAuth 2.0 アプリを作成するときは、Microsoft Entra ID OAuth を使用します。 Azure DevOps OAuth 2.0 は引き続きサポートされていますが、現時点ではこのモデルには投資していません。

Microsoft Entra ID OAuth

Microsoft Entra ID OAuth アプリを作成すると、アプリには Azure DevOps アクセス トークンではなく Microsoft Entra トークンが発行されます。 これらのトークンには、有効期限が切れる前の標準の 1 時間の期間があります。

詳細については、次の記事をご覧ください。

Note

他の API を使用するアプリを作成するときは、それらの API に必要なスコープを必ず選択してください。

Azure DevOps OAuth

既存のアプリの場合は、Azure DevOps OAuth ガイドを使用してください。 また、承認されている Azure DevOps アプリを管理することもできます

スコープ

開発者は、ユーザーに必要なスコープを指定することが求められます。 スコープは両方の OAuth モデルで使用できます。 次のスコープは、委任された (代理ユーザー) フローでのみ使用できます。 アプリに必要なスコープを確認するには、使用している各 API の API リファレンス ページのヘッダーの下 scopes を確認します。

一部のスコープは、他のスコープを含む場合があります。たとえば、 code_manage 次に示します code_write。 ユーザーにスコープの同意を要求するときに必要なスコープの最小数を検討してください。

重要

スコープでは、REST API へのアクセスのみが有効になり、Git エンドポイントが選択されます。 SOAP API アクセスはサポートされていません。

カテゴリ 範囲 名前 説明
エージェント プール vso.agentpools エージェント プール (読み取り) タスク、プール、キュー、エージェント、および現在実行中または最近完了したエージェントのジョブを表示する権限を付与します。
vso.agentpools_manage エージェント プール (読み取り、管理) プール、キュー、およびエージェントを管理する機能を付与します。
vso.environment_manage 環境 (読み取り、管理) プール、キュー、エージェント、および環境を管理する機能を付与します。
Analytics vso.analytics 分析 (読み取り) 分析データのクエリを実行する機能を付与します。
監査 vso.auditlog 監査ログ (読み取り) 監査ログをユーザーに読み取る権限を付与します。
vso.auditstreams_manage 監査ストリーム (読み取り) 監査ストリームをユーザーに管理する機能を付与します。
ビルド vso.build ビルド (読み取り) ビルドの結果、定義、要求など、ビルド成果物にアクセスする機能と、サービス フックを介してビルド イベントに関する通知を受信する機能を付与します。
vso.build_execute ビルド (読み取りと実行) ビルドの結果、定義、要求など、ビルド成果物にアクセスする機能と、ビルドをキューに入れ、ビルド プロパティを更新する機能、およびサービス フックを介してビルド イベントに関する通知を受信する機能を付与します。
コード vso.code コード (読み取り) コミット、変更セット、ブランチ、およびその他のバージョン管理成果物に関するソース コードとメタデータを読み取る機能を付与します。 また、コードを検索し、サービス フックを使用してバージョン管理イベントに関する通知を受け取る機能も付与されます。
vso.code_write コード (読み取りと書き込み) ソース コードの読み取り、更新、削除、コミット、変更セット、ブランチ、およびその他のバージョン管理成果物に関するメタデータへのアクセスを許可します。 また、プル要求とコード レビューを作成および管理したり、サービス フックを介してバージョン管理イベントに関する通知を受信したりすることもできます。
vso.code_manage コード (読み取り、書き込み、管理) ソース コードの読み取り、更新、削除、コミット、変更セット、ブランチ、およびその他のバージョン管理成果物に関するメタデータへのアクセスを許可します。 また、コード リポジトリの作成と管理、プル要求とコード レビューの作成と管理、サービス フックを介したバージョン管理イベントに関する通知の受信を行う機能も付与されます。
vso.code_full コード (すべて) ソース コード、コミット、変更セット、ブランチ、およびその他のバージョン管理成果物に関するメタデータへのフル アクセスを許可します。 また、コード リポジトリの作成と管理、プル要求とコード レビューの作成と管理、サービス フックを介したバージョン管理イベントに関する通知の受信を行う機能も付与されます。 また、クライアント OM API の制限付きサポートも含まれています。
vso.code_status コード (状態) コミットとプル要求の状態の読み取りと書き込みを行う機能を付与します。
接続されたサーバー vso.connected_server 接続しているサーバー オンプレミス接続サーバーから必要なエンドポイントにアクセスする機能を付与します。
権利 vso.entitlements 権利 (読み取り) アカウントの権利を取得するためのライセンスエンタイトルメント エンドポイントへの読み取り専用アクセスを提供します。
vso.memberentitlementmanagement MemberEntitlement Management (読み取り) ユーザー、ライセンス、およびアクセスできるプロジェクトと拡張機能を読み取る権限を付与します。
vso.memberentitlementmanagement_write MemberEntitlement Management (書き込み) ユーザー、ライセンス、およびアクセスできるプロジェクトと拡張機能を管理する権限を付与します。
拡張機能 vso.extension 拡張機能 (読み取り) インストールされている拡張機能を読み取る権限を付与します。
vso.extension_manage 拡張機能 (読み取りと管理) インストールされている拡張機能のインストール、アンインストール、その他の管理操作の実行を許可します。
vso.extension.data 拡張機能データ (読み取り) インストールされている拡張機能によって格納されたデータ (設定とドキュメント) を読み取る機能を付与します。
vso.extension.data_write 拡張データ (読み取りと書き込み) インストールされている拡張機能によって格納されているデータ (設定とドキュメント) の読み取りと書き込みを行う機能を付与します。
グラフと ID vso.graph グラフ (読み取り) ユーザー、グループ、スコープ、およびグループ メンバーシップ情報を読み取る機能を付与します。
vso.graph_manage グラフ (管理) ユーザー、グループ、スコープ、およびグループ メンバーシップ情報を読み取り、ユーザー、グループ、およびグループ メンバーシップを追加する機能を付与します。
vso.identity ID (読み取り) ID とグループを読み取る機能を付与します。
vso.identity_manage ID (管理) ID とグループの読み取り、書き込み、管理を行う機能を付与します。
マシン グループ vso.machinegroup_manage 展開グループ (読み取り、管理) デプロイ グループとエージェント プールを管理する機能を提供します。
Marketplace vso.gallery マーケットプレース パブリックおよびプライベートのアイテムとパブリッシャーへの読み取りアクセスを許可します。
vso.gallery_acquire Marketplace (取得) 読み取りアクセス権とアイテムを取得する機能を付与します。
vso.gallery_publish Marketplace (発行) 読み取りアクセス権と、アイテムをアップロード、更新、共有する機能を付与します。
vso.gallery_manage Marketplace (管理) 読み取りアクセス権と、アイテムと発行元を発行および管理する機能を付与します。
通知 vso.notification 通知 (読み取り) フィルター可能なフィールド値を含む、サブスクリプションとイベント メタデータへの読み取りアクセスを提供します。
vso.notification_write 通知 (書き込み) サブスクリプションへの読み取りと書き込みアクセスを提供し、フィルター可能なフィールド値を含むイベント メタデータへの読み取りアクセスを提供します。
vso.notification_manage 通知 (管理) サブスクリプションへの読み取り、書き込み、管理アクセスを提供し、フィルター可能なフィールド値を含むイベント メタデータへの読み取りアクセスを提供します。
vso.notification_diagnostics 通知 (診断) 通知関連の診断ログへのアクセスを提供し、個々のサブスクリプションの診断を有効にする機能を提供します。
パッケージ化 vso.packaging パッケージ化 (読み取り) フィードとパッケージを読み取る機能を付与します。
vso.packaging_write パッケージ化 (読み取りと書き込み) フィードとパッケージを作成および読み取る機能を付与します。
vso.packaging_manage パッケージ化 (読み取り、書き込み、管理) フィードとパッケージを作成、読み取り、更新、削除する機能を付与します。
パイプライン リソース vso.pipelineresources_use パイプライン リソース (使用) 保護されたリソース (エージェント プール、環境、キュー、リポジトリ、セキュリティで保護されたファイル、サービス接続、変数グループ) を使用するパイプラインの要求を承認する権限を付与します。
vso.pipelineresources_manage パイプライン リソース (使用と管理) 保護されたリソース、または保護されたリソースを使用するパイプラインの要求 (エージェント プール、環境、キュー、リポジトリ、セキュリティで保護されたファイル、サービス接続、変数グループ) を管理する権限を付与します。
プロジェクトとチーム vso.project プロジェクトおよびチーム (読み取り) プロジェクトとチームを読み取る機能を付与します。
vso.project_write プロジェクトとチーム (読み取りと書き込み) プロジェクトとチームの読み取りと更新を行う機能を付与します。
vso.project_manage プロジェクトとチーム (読み取り、書き込み、管理) プロジェクトとチームを作成、読み取り、更新、削除する機能を付与します。
リリース vso.release リリース (読み取り) リリース、リリース定義、リリース環境など、リリース成果物を読み取る機能を付与します。
vso.release_execute リリース (読み取り、書き込み、実行) リリース、リリース定義、リリース環境、新しいリリースをキューに登録する機能など、リリース成果物の読み取りと更新を行う機能を付与します。
vso.release_manage リリース (読み取り、書き込み、実行、管理) リリース、リリース定義、リリース環境など、リリース成果物の読み取り、更新、削除、および新しいリリースのキュー登録と承認を行う機能を付与します。
ファイルのセキュリティ保護 vso.securefiles_read ファイルのセキュリティ保護 (読み取り) セキュリティで保護されたファイルを読み取る機能を付与します。
vso.securefiles_write ファイルのセキュリティ保護 (読み取り、作成) セキュリティで保護されたファイルを読み取って作成する機能を付与します。
vso.securefiles_manage ファイルのセキュリティ保護 (読み取り、作成、管理) セキュリティで保護されたファイルの読み取り、作成、管理を行う機能を付与します。
Security vso.security_manage セキュリティ (管理) セキュリティアクセス許可の読み取り、書き込み、管理を行う権限を付与します。
サービス接続 vso.serviceendpoint サービス エンドポイント (読み取り) サービス エンドポイントを読み取る機能を付与します。
vso.serviceendpoint_query サービス エンドポイント (読み取りとクエリ) サービス エンドポイントの読み取りとクエリを実行する機能を付与します。
vso.serviceendpoint_manage サービス エンドポイント (読み取り、クエリ、管理) サービス エンドポイントの読み取り、クエリ、管理を行う機能を付与します。
[設定] vso.settings 設定 (読み取り) 設定を読み取る機能を付与します。
vso.settings_write 設定 (読み取りと書き込み) 設定を作成および読み取る機能を付与します。
記号 vso.symbols シンボル (読み取り) シンボルを読み取る機能を付与します。
vso.symbols_write シンボル (読み取りと書き込み) シンボルの読み取りと書き込みを行う機能を付与します。
vso.symbols_manage シンボル (読み取り、書き込み、管理) シンボルの読み取り、書き込み、および管理を行う機能を付与します。
タスク グループ vso.taskgroups_read タスク グループ (読み取り) タスク グループを読み取る機能を付与します。
vso.taskgroups_write タスク グループ (読み取り、作成) タスク グループを読み取って作成する機能を付与します。
vso.taskgroups_manage タスク グループ (読み取り、作成、管理) タスク グループの読み取り、作成、管理を行う権限を付与します。
チーム ダッシュボード vso.dashboards チーム ダッシュボード (読み取り) チーム ダッシュボード情報を読み取る機能を付与します。
vso.dashboards_manage チーム ダッシュボード (管理) チーム ダッシュボード情報を管理する機能を付与します。
テスト管理 vso.test テスト管理 (読み取り) テスト計画、ケース、結果、その他のテスト管理関連の成果物を読み取る機能を付与します。
vso.test_write テスト管理 (読み取りと書き込み) テスト 計画、ケース、結果、その他のテスト管理関連成果物の読み取り、作成、更新を行う機能を付与します。
スレッド vso.threads_full PR スレッド 要求コメント スレッドをプルするための読み取りと書き込みの機能を付与します。
トークン vso.tokens 委任された承認トークン 委任された承認トークンをユーザーに管理する権限を付与します。
vso.tokenadministration トークン 管理istration 組織の管理者に対して、既存のトークンを管理 (表示および取り消し) する機能を付与します。
ユーザー プロファイル vso.profile ユーザー プロファイル (読み取り) プロファイル、アカウント、コレクション、プロジェクト、チーム、およびその他のトップレベルの組織成果物を読み取る機能を付与します。
vso.profile_write ユーザー プロファイル (書き込み) プロファイルに書き込む権限を付与します。
変数グループ vso.variablegroups_read 変数グループ (読み取り) 変数グループを読み取る機能を付与します。
vso.variablegroups_write 変数グループ (読み取り、作成) 変数グループを読み取って作成する機能を付与します。
vso.variablegroups_manage 変数グループ (読み取り、作成、管理) 変数グループの読み取り、作成、管理を行う権限を付与します。
Wiki vso.wiki Wiki (読み取り) Wiki、Wiki ページ、Wiki の添付ファイルを読み取る権限を付与します。 Wiki ページを検索する機能も付与されます。
vso.wiki_write Wiki (読み取りと書き込み) Wiki、Wiki ページ、Wiki の添付ファイルの読み取り、作成、更新を行う権限を付与します。
作業項目 vso.work 作業項目 (読み取り) 作業項目、クエリ、ボード、領域とイテレーションのパス、およびその他の作業項目追跡関連のメタデータを読み取る機能を付与します。 また、クエリを実行したり、作業項目を検索したり、サービス フックを介して作業項目イベントに関する通知を受信したりすることもできます。
vso.work_write 作業項目 (読み取りおよび書き込み) 作業項目とクエリの読み取り、作成、更新、ボード メタデータの更新、領域の読み取り、反復パスに関連するメタデータの追跡、クエリの実行、サービス フックを介した作業項目イベントに関する通知の受信を行う機能を付与します。
vso.work_full 作業項目 (完全) 作業項目、クエリ、バックログ、プラン、作業項目追跡メタデータへのフル アクセスを許可します。 また、サービス フックを介して作業項目イベントに関する通知を受信する機能も提供します。
ユーザーの偽装 user_impersonation ユーザーの偽装 Visual Studio Team Services REST API にフル アクセスできます。 非常に強力であるため、このスコープを慎重に要求または同意してください。