Azure DevOps Services
ユーザーが資格情報を繰り返し入力しなくても、OAuth 2.0 を使用して Azure DevOps REST API アクセス用のアプリケーションを認証する方法について説明します。
重要
新しいアプリケーションには Microsoft Entra ID OAuth を使用することをお勧めします。 Azure DevOps OAuth 2.0 は非推奨となり、2025 年 4 月の時点で新しい登録は受け付けなくなり、2026 年に完全な非推奨が予定されています。
Azure DevOps での OAuth 2.0 のしくみ
注
OAuth 2.0 は、Azure DevOps Server ではなく、Azure DevOps Services でのみ使用できます。 オンプレミスのシナリオでは、 クライアント ライブラリ、Windows 認証、または 個人用アクセス トークンを使用します。
Azure DevOps Services では 、OAuth 2.0 プロトコル を使用してアプリケーションを承認し、REST API 呼び出し用のアクセス トークンを生成します。 このプロセスには、次の手順が含まれます。
- アプリの登録: OAuth プロバイダーにアプリケーションを登録します。
- ユーザー承認: アプリがユーザー データにアクセスするためのアクセス許可を付与します。
- トークン交換: API 呼び出しを行うアクセス トークンを受け取ります。
- API アクセス: 認証された REST API 要求にトークンを使用します。
- トークンの更新: 期限切れのトークンを更新してアクセスを維持します。
OAuth 実装オプション
アプリケーションのニーズに基づいて、適切な OAuth 実装を選択します。
Microsoft Entra ID OAuth (推奨)
Microsoft Entra ID OAuth は、Azure DevOps アプリケーションに対して最も安全で将来を見据える認証方法を提供します。 次のような利点があります。
- エンタープライズ統合: 既存の Microsoft Entra ID インフラストラクチャとのシームレスな統合。
- セキュリティの強化: 高度なセキュリティ機能には、Microsoft Entra の条件付きアクセスと多要素認証が含まれます。
- 今後のサポート: 積極的に保守およびサポートされているプラットフォーム。
- 統合 ID: Microsoft サービス全体でのシングル サインオン エクスペリエンス。
はじめに: 実装の詳細と移行ガイダンスについては、 Microsoft Entra ID OAuth ガイド に従ってください。
Azure DevOps OAuth (非推奨)
Warnung
Azure DevOps OAuth は非推奨です。 2025 年 4 月の時点で、新しいアプリの登録は受け付けなくなりました。 このサービスは、2026 年に完全に廃止される予定です。 既存のアプリケーションを Microsoft Entra ID OAuth に移行します。
既存の Azure DevOps OAuth アプリケーションの場合:
- 現在の実装の詳細については、 Azure DevOps OAuth ガイド を確認してください。
- 2026 年までに Microsoft Entra ID OAuth への移行を計画します。
- 必要に応じて、既存のアプリ承認を管理 します。
移行計画: Microsoft Entra ID OAuth への移行の計画を早い段階で開始します。 移行ガイドには、スムーズな移行のためのヒントと考慮事項が記載されています。
OAuth のスコープ
スコープは、アプリケーションがアクセスできる Azure DevOps リソースを定義します。 Microsoft Entra ID OAuth と Azure DevOps OAuth はどちらも同じスコープ定義を使用します。
スコープに関する主な考慮事項
- 最小特権の原則: アプリケーションに必要な最小スコープのみを要求します。
-
スコープの継承: 一部のスコープには他のスコープが含まれます (たとえば、
vso.code_manageにはvso.code_writeが含まれます)。 - API カバレッジ: スコープを使用すると、REST API へのアクセスが有効になり、Git エンドポイントのみが選択されます (SOAP API はサポートされていません)。
- ユーザーの同意: ユーザーは、要求されたスコープごとにアクセス許可を明示的に付与する必要があります。
必要なスコープを検索する
アプリケーションに必要なスコープを決定するには:
- 使用する予定の各エンドポイントの API リファレンス ドキュメントを確認してください。
- 各 API ページで
scopesヘッダーを探します。 - 冗長なアクセス許可を要求しないようにするには、スコープの関係を検討してください。
利用可能なスコープ
| カテゴリ | Scope | 名前 | 高い特権 | 説明 | 継承 |
|---|---|---|---|---|---|
| 高度なセキュリティ | vso.advsec |
高度なセキュリティ (読み取り) | イエス | アラート、結果インスタンス、および分析結果インスタンスを読み取る機能を付与します。 | |
vso.advsec_write |
高度なセキュリティ (読み取りと書き込み) | イエス | serif で分析をアップロードする機能を付与します。 | vso.advsec |
|
vso.advsec_manage |
高度なセキュリティ (読み取り、書き込み、管理) | イエス | serif で分析をアップロードする機能を付与します。 | vso.advsec_write |
|
| エージェント プール | vso.agentpools |
エージェント プール (読み取り) | タスク、プール、キュー、エージェント、現在実行中または最近完了したエージェントのジョブを表示する機能を付与します。 | ||
vso.agentpools_manage |
エージェント プール (読み取りと管理) | イエス | プール、キュー、およびエージェントを管理する機能を付与します。 | vso.agentpools |
|
vso.environment_manage |
環境 (読み取りと管理) | イエス | プール、キュー、エージェント、および環境を管理する機能を付与します。 | vso.agentpools_manage |
|
| Analytics | vso.analytics |
分析 (読み取り) | 分析データのクエリを実行する機能を付与します。 | ||
| Auditing | vso.auditlog |
監査ログ (読み取り) | 監査ログをユーザーに読み取る権限を付与します。 | ||
vso.auditstreams_manage |
監査ストリーム (読み取り) | イエス | 監査ストリームをユーザーに管理する機能を付与します。 | vso.auditlog |
|
| 建築する | vso.build |
ビルド (読み取り) | ビルドの結果、定義、要求など、ビルド成果物にアクセスする機能と、サービス フックを介してビルド イベントに関する通知を受信する機能を付与します。 | vso.hooks_write |
|
vso.build_execute |
ビルド (読み取りと実行) | イエス | ビルド結果、定義、要求など、ビルド成果物にアクセスする権限を付与します。 また、ビルドをキューに入れ、ビルド プロパティを更新し、サービス フックを介してビルド イベントに関する通知を受け取る機能も付与します。 | vso.build |
|
| Code | 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 |
メンバーエンタイトルメント管理 (読み取り) | ユーザー、ライセンス、およびアクセスできるプロジェクトと拡張機能を読み取る権限を付与します。 | |||
vso.memberentitlementmanagement_write |
メンバーエンタイトルメント管理 (書き込み) | イエス | ユーザーとそのライセンス、およびアクセスできるプロジェクトと拡張機能を管理する権限を付与します。 | vso.memberentitlementmanagement |
|
| Extensions | 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 とグループの読み取り、書き込み、管理を行う機能を付与します。 | vso.identity |
|
| マシン グループ | vso.machinegroup_manage |
デプロイメントグループ (読み取り、管理) | イエス | デプロイ グループとエージェント プールを管理する機能を付与します。 | vso.agentpools_manage |
| Marketplace | vso.gallery |
Marketplace | 公開項目、非公開項目、発行者への読み取りアクセスを付与します。 | vso.profile |
|
vso.gallery_acquire |
マーケットプレイス (取得) | 読み取りアクセス権とアイテムを取得する機能を付与します。 | vso.gallery |
||
vso.gallery_publish |
マーケットプレイス (公開) | イエス | 読み取りアクセス権と、アイテムをアップロード、更新、共有する機能を付与します。 | vso.gallery |
|
vso.gallery_manage |
マーケットプレイス (管理) | イエス | 読み取りアクセス権と、アイテムと発行元を発行および管理する機能を付与します。 | vso.gallery_publish |
|
| Notifications | 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_use |
|
| プロジェクトとチーム | 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_execute |
|
| ファイルをセキュリティで保護する | vso.securefiles_read |
ファイルのセキュリティ保護 (読み取り) | イエス | セキュリティで保護されたファイルを読み取る機能を付与します。 | |
vso.securefiles_write |
ファイルのセキュリティ保護 (読み取りと作成) | イエス | セキュリティで保護されたファイルを読み取って作成する機能を付与します。 | vso.securefiles_read |
|
vso.securefiles_manage |
ファイルのセキュリティ保護 (読み取り、作成、管理) | イエス | セキュリティで保護されたファイルの読み取り、作成、管理を行う機能を付与します。 | vso.securefiles_write |
|
| セキュリティ | 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 |
||
| 設定 | vso.settings |
設定 (読み取り) | 設定を読み取る機能を付与します。 | ||
vso.settings_write |
設定 (読み取りと書き込み) | 設定の読み取りと書き込みを行う機能を付与します。 | vso.settings |
||
| シンボル | 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 |
||
| Threads | vso.threads_full |
PR スレッド | 要求コメント スレッドをプルするための読み取りと書き込みの機能を付与します。 | ||
| Tokens | 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 |
|
| ウィキ | 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 へのフル アクセスを許可します。 このスコープは非常に強力であるため、慎重に要求または同意してください。 |
よく寄せられる質問
質問 モバイル アプリケーションで OAuth を使用できますか?
A。 No. Azure DevOps Services では、アプリ シークレットを安全に格納する必要がある Web サーバー フロー (承認コード フロー) のみがサポートされています。 モバイル アプリケーションではシークレットを安全に格納できないため、OAuth はモバイル シナリオに適していません。
モバイル アプリの代替手段: モバイル アプリケーション認証 に個人用アクセス トークンを 使用します。
質問 OAuth はすべての Azure DevOps API で動作しますか?
A。 OAuth は REST API をサポートし、Git エンドポイントのみを選択します。 SOAP API は OAuth 認証をサポートしていません。
質問 Azure DevOps OAuth から Microsoft Entra ID OAuth に移行するにはどうすればよいですか?
A。 Microsoft Entra ID OAuth 移行ガイドに従います。これには次のものが含まれます。
- ステップ バイ ステップの移行手順。
- コード例とベスト プラクティス。
- 非推奨のタイムラインに関する考慮事項。
質問 2026 以降、既存の Azure DevOps OAuth アプリはどうなりますか?
A。 既存の Azure DevOps OAuth アプリは、2026 年にサービスが完全に非推奨になると動作を停止します。 この期限の前に、Microsoft Entra ID OAuth への移行を計画します。
実装パスを選択する
- 新しいアプリケーションの場合:Microsoft Entra ID OAuth を使用してビルドする
- 既存の Azure DevOps OAuth アプリの場合:Microsoft Entra ID への移行を計画する
- すぐにサポートが必要な既存のアプリの場合:Azure DevOps OAuth のドキュメント