OAuth 2.0 を使用して REST API へのアクセスを承認する
Azure DevOps Services
アプリがユーザー名とパスワードを要求し続けないように、REST API アクセスのために Web アプリ ユーザーを認証する方法について説明します。
Note
- 次のガイダンスは、Azure DevOps Server で OAuth 2.0 がサポートされていないため、Azure DevOps Services ユーザーを対象としています。 クライアント ライブラリは、Azure DevOps Server機能を拡張するために特別に構築された一連のパッケージです。 オンプレミス ユーザーの場合は、 Client ライブラリ、Windows 認証、または 個人アクセス トークン (AT) を使用して、ユーザーに代わって認証することをお勧めします。
- 詳細については、 C# OAuth GitHub サンプルを参照してください。
OAuth 2.0 について
Azure DevOps Services では、 OAuth 2.0 プロトコル を使用してユーザーのアプリを承認し、アクセス トークンを生成します。 アプリケーションから REST API を呼び出すときは、このトークンを使用してください。 Azure DevOps Services API を呼び出すときは、対応するユーザーのアクセス トークンを使用します。 アクセス トークンの有効期限が切れているため、有効期限が切れた場合はアクセス トークンを更新します。
使用可能な OAuth モデル
重要
新しい OAuth 2.0 アプリを作成するときは、Microsoft Entra ID OAuth を使用します。 Azure DevOps OAuth 2.0 は、2026 年に非推奨となる予定です。 2025 年 2 月以降、新しい Azure DevOps OAuth アプリの受け入れは停止されます。 詳しくは、ブログ記事をご覧ください。
Microsoft Entra ID OAuth
新しいプラットフォームでのビルドは、圧倒的な可能性があります。 Azure DevOps 用の Microsoft Entra アプリを構築するためのこのガイドでは Microsoft Entra で OAuth アプリ開発プロセスを開始するのに役立つ可能性のある有用なリンクを収集します。 Azure DevOps OAuth から Microsoft Entra OAuth に移行するユーザー向けに、移行作業中に考慮すべき有用なヒントが提供されます。
Azure DevOps OAuth
既存のアプリについては、 Azure DevOps OAuth アプリ ガイドを参照してください。 また、リソースにアクセスするために、承認されている Azure DevOps アプリを管理することもできます。
スコープ
開発者は、ユーザーに必要なスコープを指定することが求められます。 両方の OAuth モデルで同じスコープを使用できます。 次のスコープは、委任された (代理ユーザー) フローでのみ使用できます。
アプリに必要なスコープを確認するには、使用している各 API の API リファレンス ページの scopes
ヘッダーを参照してください。
一部のスコープには、他のスコープが含まれる場合があります。たとえば、 vso.code_manage
には vso.code_write
が含まれます。 たとえば、多くのスコープは vso.profile
から継承されます。 ユーザーにスコープの同意を要求するときに必要なスコープの最小数を検討してください。
Note
スコープでは、REST API へのアクセスのみが有効になり、Git エンドポイントが選択されます。 SOAP API アクセスはサポートされていません。
カテゴリ | 範囲 | 名前 | 説明 | 継承元 |
---|---|---|---|---|
高度なセキュリティ | vso.advsec |
AdvancedSecurity (読み取り) | アラート、結果インスタンス、分析結果インスタンスを読み取る機能を付与します。 | |
vso.advsec_write |
AdvancedSecurity (読み取りと書き込み) | サリフで分析をアップロードする機能を付与します | vso.advsec |
|
vso.advsec_manage |
AdvancedSecurity (読み取り、書き込み、管理) | サリフで分析をアップロードする機能を付与します | vso.advsec_write |
|
エージェント プール | vso.agentpools |
エージェント プール (読み取り) | タスク、プール、キュー、エージェント、および現在実行中または最近完了したエージェントのジョブを表示する権限を付与します。 | |
vso.agentpools_manage |
エージェント プール (読み取り、管理) | プール、キュー、およびエージェントを管理する機能を付与します。 | vso.agentpools |
|
vso.environment_manage |
環境 (読み取り、管理) | プール、キュー、エージェント、および環境を管理する機能を付与します。 | vso.agentpools_manage |
|
分析 | vso.analytics |
分析 (読み取り) | 分析データのクエリを実行する機能を付与します。 | |
監査 | vso.auditlog |
監査ログ (読み取り) | 監査ログをユーザーに読み取る権限を付与します。 | |
vso.auditstreams_manage |
監査ストリーム (読み取り) | 監査ストリームをユーザーに管理する機能を付与します。 | vso.auditlog |
|
ビルド | vso.build |
ビルド (読み取り) | ビルドの結果、定義、要求など、ビルド成果物にアクセスする機能と、サービス フックを介してビルド イベントに関する通知を受信する機能を付与します。 | vso.hooks_write |
vso.build_execute |
ビルド (読み取りと実行) | ビルドの結果、定義、要求など、ビルド成果物にアクセスする機能と、ビルドをキューに入れ、ビルド プロパティを更新する機能、およびサービス フックを介してビルド イベントに関する通知を受信する機能を付与します。 | vso.build |
|
コード | vso.code |
コード (読み取り) | コミット、変更セット、ブランチ、およびその他のバージョン管理成果物に関するソース コードとメタデータを読み取る機能を付与します。 また、コードを検索し、サービス フックを使用してバージョン管理イベントに関する通知を受け取る機能も付与されます。 | vso.hooks_write |
vso.code_write |
コード (読み取りと書き込み) | ソース コードの読み取り、更新、削除、コミット、変更セット、ブランチ、およびその他のバージョン管理成果物に関するメタデータへのアクセスを許可します。 また、プル要求とコード レビューを作成および管理したり、サービス フックを介してバージョン管理イベントに関する通知を受信したりすることもできます。 | vso.code |
|
vso.code_manage |
コード (読み取り、書き込み、管理) | ソース コードの読み取り、更新、削除、コミット、変更セット、ブランチ、およびその他のバージョン管理成果物に関するメタデータへのアクセスを許可します。 また、コード リポジトリの作成と管理、プル要求とコード レビューの作成と管理、サービス フックを介したバージョン管理イベントに関する通知の受信を行う機能も付与されます。 | vso.code_write |
|
vso.code_full |
コード (すべて) | ソース コード、コミット、変更セット、ブランチ、およびその他のバージョン管理成果物に関するメタデータへのフル アクセスを許可します。 また、コード リポジトリの作成と管理、プル要求とコード レビューの作成と管理、サービス フックを介したバージョン管理イベントに関する通知の受信を行う機能も付与されます。 また、クライアント OM API の制限付きサポートも含まれています。 | vso.code_manage |
|
vso.code_status |
コード (状態) | コミットとプル要求の状態の読み取りと書き込みを行う機能を付与します。 | ||
接続されたサーバー | vso.connected_server |
接続しているサーバー | オンプレミスの接続されたサーバーから必要なエンドポイントにアクセスする権限を付与します。 | |
権利 | vso.entitlements |
権利 (読み取り) | アカウントの権利を取得するためのライセンスエンタイトルメント エンドポイントへの読み取り専用アクセスを提供します。 | |
vso.memberentitlementmanagement |
MemberEntitlement Management (読み取り) | ユーザー、ライセンス、およびアクセスできるプロジェクトと拡張機能を読み取る権限を付与します。 | ||
vso.memberentitlementmanagement_write |
MemberEntitlement Management (書き込み) | ユーザー、ライセンス、およびアクセスできるプロジェクトと拡張機能を管理する権限を付与します。 | vso.memberentitlementmanagement |
|
拡張機能 | vso.extension |
拡張機能 (読み取り) | インストールされている拡張機能を読み取る権限を付与します。 | vso.profile |
vso.extension_manage |
拡張機能 (読み取りと管理) | インストールされている拡張機能のインストール、アンインストール、その他の管理操作の実行を許可します。 | vso.extension |
|
vso.extension.data |
拡張機能データ (読み取り) | インストールされている拡張機能によって格納されたデータ (設定とドキュメント) を読み取る機能を付与します。 | vso.profile |
|
vso.extension.data_write |
拡張データ (読み取りと書き込み) | インストールされている拡張機能によって格納されているデータ (設定とドキュメント) の読み取りと書き込みを行う機能を付与します。 | vso.extension.data |
|
Github の接続 | vso.githubconnections |
GitHub 接続 (読み取り) | GitHub 接続と GitHub リポジトリ データを読み取る機能を付与します。 | |
vso.githubconnections_manage |
GitHub 接続 (読み取りと管理) | GitHub 接続と GitHub リポジトリ データの読み取りと管理を行う機能を付与します | vso.githubconnections |
|
グラフと ID | vso.graph |
グラフ (読み取り) | ユーザー、グループ、スコープ、およびグループ メンバーシップ情報を読み取る機能を付与します。 | |
vso.graph_manage |
グラフ (管理) | ユーザー、グループ、スコープ、およびグループ メンバーシップ情報を読み取り、ユーザー、グループ、およびグループ メンバーシップを追加する機能を付与します。 | vso.graph |
|
vso.identity |
ID (読み取り) | ID とグループを読み取る機能を付与します。 | ||
vso.identity_manage |
ID (管理) | ID とグループの読み取り、書き込み、管理を行う機能を付与します。 | vso.identity |
|
マシン グループ | vso.machinegroup_manage |
展開グループ (読み取り、管理) | デプロイ グループとエージェント プールを管理する機能を提供します。 | vso.agentpools_manage |
Marketplace | vso.gallery |
マーケットプレース | パブリックおよびプライベートのアイテムとパブリッシャーへの読み取りアクセスを許可します。 | vso.profile |
vso.gallery_acquire |
Marketplace (取得) | 読み取りアクセス権とアイテムを取得する機能を付与します。 | vso.gallery |
|
vso.gallery_publish |
Marketplace (発行) | 読み取りアクセス権と、アイテムをアップロード、更新、共有する機能を付与します。 | vso.gallery |
|
vso.gallery_manage |
Marketplace (管理) | 読み取りアクセス権と、アイテムと発行元を発行および管理する機能を付与します。 | vso.gallery_publish |
|
通知 | vso.notification |
通知 (読み取り) | フィルター可能なフィールド値を含む、サブスクリプションとイベント メタデータへの読み取りアクセスを提供します。 | vso.profile |
vso.notification_write |
通知 (書き込み) | サブスクリプションへの読み取りと書き込みアクセスを提供し、フィルター可能なフィールド値を含むイベント メタデータへの読み取りアクセスを提供します。 | vso.notification |
|
vso.notification_manage |
通知 (管理) | サブスクリプションへの読み取り、書き込み、管理アクセスを提供し、フィルター可能なフィールド値を含むイベント メタデータへの読み取りアクセスを提供します。 | vso.notification_write |
|
vso.notification_diagnostics |
通知 (診断) | 通知関連の診断ログへのアクセスを提供し、個々のサブスクリプションの診断を有効にする機能を提供します。 | vso.notification |
|
パッケージ化 | vso.packaging |
パッケージ化 (読み取り) | フィードとパッケージを読み取る機能を付与します。 | vso.profile |
vso.packaging_write |
パッケージ化 (読み取りと書き込み) | フィードとパッケージを作成および読み取る機能を付与します。 | vso.packaging |
|
vso.packaging_manage |
パッケージ化 (読み取り、書き込み、管理) | フィードとパッケージを作成、読み取り、更新、削除する機能を付与します。 | vso.packaging_write |
|
パイプライン リソース | vso.pipelineresources_use |
パイプライン リソース (使用) | 保護されたリソース (エージェント プール、環境、キュー、リポジトリ、セキュリティで保護されたファイル、サービス接続、変数グループ) を使用するパイプラインの要求を承認する権限を付与します。 | |
vso.pipelineresources_manage |
パイプライン リソース (使用と管理) | 保護されたリソース、または保護されたリソースを使用するパイプラインの要求 (エージェント プール、環境、キュー、リポジトリ、セキュリティで保護されたファイル、サービス接続、変数グループ) を管理する権限を付与します。 | vso.pipelineresources_manage |
|
プロジェクトとチーム | vso.project |
プロジェクトおよびチーム (読み取り) | プロジェクトとチームを読み取る機能を付与します。 | |
vso.project_write |
プロジェクトとチーム (読み取りと書き込み) | プロジェクトとチームの読み取りと更新を行う機能を付与します。 | vso.project |
|
vso.project_manage |
プロジェクトとチーム (読み取り、書き込み、管理) | プロジェクトとチームを作成、読み取り、更新、削除する機能を付与します。 | vso.project_write |
|
リリース | vso.release |
リリース (読み取り) | リリース、リリース定義、リリース環境など、リリース成果物を読み取る機能を付与します。 | vso.profile |
vso.release_execute |
リリース (読み取り、書き込み、実行) | リリース、リリース定義、リリース環境、新しいリリースをキューに登録する機能など、リリース成果物の読み取りと更新を行う機能を付与します。 | vso.release |
|
vso.release_manage |
リリース (読み取り、書き込み、実行、管理) | リリース、リリース定義、リリース環境など、リリース成果物の読み取り、更新、削除、および新しいリリースのキュー登録と承認を行う機能を付与します。 | vso.release_manage |
|
ファイルのセキュリティ保護 | vso.securefiles_read |
ファイルのセキュリティ保護 (読み取り) | セキュリティで保護されたファイルを読み取る機能を付与します。 | |
vso.securefiles_write |
ファイルのセキュリティ保護 (読み取り、作成) | セキュリティで保護されたファイルを読み取って作成する機能を付与します。 | vso.securefiles_read |
|
vso.securefiles_manage |
ファイルのセキュリティ保護 (読み取り、作成、管理) | セキュリティで保護されたファイルの読み取り、作成、管理を行う機能を付与します。 | vso.securefiles_write |
|
Security | vso.security_manage |
セキュリティ (管理) | セキュリティアクセス許可の読み取り、書き込み、管理を行う権限を付与します。 | |
サービス接続 | vso.serviceendpoint |
サービス エンドポイント (読み取り) | サービス エンドポイントを読み取る機能を付与します。 | vso.profile |
vso.serviceendpoint_query |
サービス エンドポイント (読み取りとクエリ) | サービス エンドポイントの読み取りとクエリを実行する機能を付与します。 | vso.serviceendpoint |
|
vso.serviceendpoint_manage |
サービス エンドポイント (読み取り、クエリ、管理) | サービス エンドポイントの読み取り、クエリ、管理を行う機能を付与します。 | vso.serviceendpoint_query |
|
サービス フック | vso.hooks |
サービス フック (読み取り) | サポートされているイベント、コンシューマー、アクションなど、サービス フックのサブスクリプションとメタデータを読み取る機能を付与します。 (パブリックではなくなりました。) | vso.profile |
vso.hooks_write |
サービス フック (読み取りと書き込み) | サービス フック サブスクリプションを作成および更新し、サポートされているイベント、コンシューマー、アクションなどのメタデータを読み取る機能を付与します。 (パブリックではなくなりました。) | vso.hooks |
|
vso.hooks_interact |
サービス フック (対話) | サービス フックを介して受信したイベントに対して操作を行う機能を付与します。 (パブリックではなくなりました。) | vso.profile |
|
Settings | vso.settings |
設定 (読み取り) | 設定を読み取る機能を付与します。 | |
vso.settings_write |
設定 (読み取りと書き込み) | 設定を作成および読み取る機能を付与します。 | ||
記号 | vso.symbols |
シンボル (読み取り) | シンボルを読み取る機能を付与します。 | vso.profile |
vso.symbols_write |
シンボル (読み取りと書き込み) | シンボルの読み取りと書き込みを行う機能を付与します。 | vso.symbols |
|
vso.symbols_manage |
シンボル (読み取り、書き込み、管理) | シンボルの読み取り、書き込み、および管理を行う機能を付与します。 | vso.symbols_write |
|
タスク グループ | vso.taskgroups_read |
タスク グループ (読み取り) | タスク グループを読み取る機能を付与します。 | |
vso.taskgroups_write |
タスク グループ (読み取り、作成) | タスク グループを読み取って作成する機能を付与します。 | vso.taskgroups_read |
|
vso.taskgroups_manage |
タスク グループ (読み取り、作成、管理) | タスク グループの読み取り、作成、管理を行う権限を付与します。 | vso.taskgroups_write |
|
チーム ダッシュボード | vso.dashboards |
チーム ダッシュボード (読み取り) | チーム ダッシュボード情報を読み取る機能を付与します。 | |
vso.dashboards_manage |
チーム ダッシュボード (管理) | チーム ダッシュボード情報を管理する機能を付与します。 | vso.dashboards |
|
テスト管理 | vso.test |
テスト管理 (読み取り) | テスト計画、ケース、結果、その他のテスト管理関連の成果物を読み取る機能を付与します。 | vso.profile |
vso.test_write |
テスト管理 (読み取りと書き込み) | テスト 計画、ケース、結果、その他のテスト管理関連成果物の読み取り、作成、更新を行う機能を付与します。 | vso.test |
|
スレッド | vso.threads_full |
PR スレッド | 要求コメント スレッドをプルするための読み取りと書き込みの機能を付与します。 | |
トークン | vso.tokens |
委任された承認トークン | 委任された承認トークンをユーザーに管理する権限を付与します。 | |
vso.tokenadministration |
トークン管理 | 組織の管理者に対して、既存のトークンを管理 (表示および取り消し) する機能を付与します。 | ||
ユーザー プロファイル | vso.profile |
ユーザー プロファイル (読み取り) | プロファイル、アカウント、コレクション、プロジェクト、チーム、およびその他のトップレベルの組織成果物を読み取る機能を付与します。 | |
vso.profile_write |
ユーザー プロファイル (書き込み) | プロファイルに書き込む権限を付与します。 | vso.profile |
|
変数グループ | vso.variablegroups_read |
変数グループ (読み取り) | 変数グループを読み取る機能を付与します。 | |
vso.variablegroups_write |
変数グループ (読み取り、作成) | 変数グループを読み取って作成する機能を付与します。 | vso.variablegroups_read |
|
vso.variablegroups_manage |
変数グループ (読み取り、作成、管理) | 変数グループの読み取り、作成、管理を行う権限を付与します。 | vso.variablegroups_write |
|
Wiki | vso.wiki |
Wiki (読み取り) | Wiki、Wiki ページ、Wiki の添付ファイルを読み取る権限を付与します。 Wiki ページを検索する機能も付与されます。 | |
vso.wiki_write |
Wiki (読み取りと書き込み) | Wiki、Wiki ページ、Wiki の添付ファイルの読み取り、作成、更新を行う権限を付与します。 | vso.wiki |
|
作業項目 | vso.work |
作業項目 (読み取り) | 作業項目、クエリ、ボード、領域とイテレーションのパス、およびその他の作業項目追跡関連のメタデータを読み取る機能を付与します。 また、クエリを実行したり、作業項目を検索したり、サービス フックを介して作業項目イベントに関する通知を受信したりすることもできます。 | vso.hooks_write |
vso.work_write |
作業項目 (読み取りおよび書き込み) | 作業項目とクエリの読み取り、作成、更新、ボード メタデータの更新、領域の読み取り、反復パスに関連するメタデータの追跡、クエリの実行、サービス フックを介した作業項目イベントに関する通知の受信を行う機能を付与します。 | vso.work |
|
vso.work_full |
作業項目 (完全) | 作業項目、クエリ、バックログ、プラン、作業項目追跡メタデータへのフル アクセスを許可します。 また、サービス フックを介して作業項目イベントに関する通知を受信する機能も提供します。 | vso.work_write |
|
ユーザーの偽装 | user_impersonation |
ユーザーの偽装 | Visual Studio Team Services REST API にフル アクセスできます。 非常に強力であるため、このスコープを慎重に要求または同意してください。 |
よく寄せられる質問
よく寄せられる質問 (FAQ)
Q: 携帯電話アプリで OAuth を使用できますか?
A: いいえ。 Azure DevOps Services は Web サーバー フローのみをサポートしているため、アプリ シークレットを安全に格納できないため、OAuth を実装する方法はありません。
Q: SOAP エンドポイントと REST API で OAuth を使用できますか。
A: いいえ。 OAuth は REST API でのみサポートされます。