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 Services でのみ使用でき、Azure DevOps Server では使用できません。 オンプレミスのシナリオでは、 クライアント ライブラリ、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 インフラストラクチャとのシームレスな統合
- セキュリティの強化: 条件付きアクセスや多要素認証を含む高度なセキュリティ機能
- 今後のサポート: アクティブに保守およびサポートされているプラットフォーム
- 統合 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 |
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 の管理 (読み取り) | ユーザー、ライセンス、およびアクセスできるプロジェクトと拡張機能を読み取る権限を付与します。 | |||
vso.memberentitlementmanagement_write |
MemberEntitlement 管理 (書き込み) | イエス | ユーザー、ライセンス、およびアクセスできるプロジェクトと拡張機能を管理する権限を付与します。 | 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 |
|
グラフとアイデンティティ | vso.graph |
グラフ (読み取り) | ユーザー、グループ、スコープ、およびグループ メンバーシップ情報を読み取る機能を付与します。 | ||
vso.graph_manage |
グラフ (管理) | イエス | ユーザー、グループ、スコープ、およびグループ メンバーシップ情報を読み取り、ユーザー、グループ、およびグループ メンバーシップを追加する機能を付与します。 | vso.graph |
|
vso.identity |
ID (読み取り) | ID とグループを読み取る機能を付与します。 | |||
vso.identity_manage |
アイデンティティ(管理) | イエス | ID とグループの読み取り、書き込み、管理を行う機能を付与します。 | vso.identity |
|
マシン グループ | vso.machinegroup_manage |
デプロイメントグループ (読み取り、管理) | イエス | デプロイ グループとエージェント プールを管理する機能を提供します。 | vso.agentpools_manage |
マーケットプレイス | vso.gallery |
Marketplace | 公開項目、非公開項目、発行者への読み取りアクセスを付与します。 | vso.profile |
|
vso.gallery_acquire |
マーケットプレイス (取得) | 読み取りアクセス権とアイテムを取得する機能を付与します。 | vso.gallery |
||
vso.gallery_publish |
マーケットプレイス (公開) | イエス | 読み取りアクセス権と、アイテムをアップロード、更新、共有する機能を付与します。 | vso.gallery |
|
vso.gallery_manage |
マーケットプレイス (管理) | イエス | 読み取りアクセス権と、アイテムと発行元を発行および管理する機能を付与します。 | 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_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 |
||
スレッド | 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 |
|
ウィキ | 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 にフル アクセスできます。 非常に強力であるため、このスコープを慎重に要求または同意してください。 |
よく寄せられる質問
Q: モバイル アプリケーションで OAuth を使用できますか?
A: いいえ。 Azure DevOps Services では、アプリ シークレットを安全に格納する必要がある Web サーバー フロー (承認コード フロー) のみがサポートされます。 モバイル アプリケーションではシークレットを安全に格納できないため、OAuth はモバイル シナリオに適していません。
モバイル アプリの代替手段: モバイル アプリケーション認証 に個人用アクセス トークンを 使用します。
Q: OAuth はすべての Azure DevOps API で動作しますか?
A: OAuth は REST API をサポートし、Git エンドポイントのみを選択します。 SOAP API は OAuth 認証をサポートしていません。
Q: Azure DevOps OAuth から Microsoft Entra ID OAuth に移行するにはどうすればよいですか?
A: Microsoft Entra ID OAuth 移行ガイドに従います。これには次のものが含まれます。
- ステップ バイ ステップの移行手順
- コード例とベスト プラクティス
- 非推奨に関するタイムラインの考慮事項
Q: 2026 以降、既存の Azure DevOps OAuth アプリはどうなりますか?
A: 既存の Azure DevOps OAuth アプリは、2026 年にサービスが完全に非推奨になると動作を停止します。 この期限の前に、Microsoft Entra ID OAuth への移行を計画します。
次のステップ
実装パスを選択します。
新しいアプリケーションの場合:
既存の Azure DevOps OAuth アプリの場合:
即時サポートが必要な既存のアプリの場合: