次の方法で共有


Azure DevOps REST API の OAuth 2.0 認証

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 呼び出し用のアクセス トークンを生成します。 このプロセスには、以下が含まれます。

  1. アプリの登録: OAuth プロバイダーにアプリケーションを登録する
  2. ユーザーの承認: ユーザーは、データにアクセスするためのアクセス許可をアプリに付与します
  3. トークン交換: API 呼び出しを行うためにアクセス トークンを受信する
  4. API アクセス: 認証された REST API 要求にトークンを使用する
  5. トークンの更新: 期限切れのトークンを更新してアクセスを維持する

アプリの登録から API アクセスまでのプロセスを示す OAuth 2.0 承認フロー図。

OAuth 実装オプション

アプリケーションのニーズに基づいて、適切な 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 アプリケーションの場合:

ヒント

移行計画: 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 はサポートされていません)。
  • ユーザーの同意: ユーザーは、要求されたスコープごとにアクセス許可を明示的に付与する必要があります。

必要なスコープの検索

アプリケーションに必要なスコープを決定するには:

  1. 使用する予定の各エンドポイントの API リファレンス ドキュメントを確認してください。
  2. 各 API ページで scopes ヘッダーを探します。
  3. 冗長なアクセス許可を要求しないようにするには、スコープの関係を検討してください。

利用可能なスコープ

カテゴリ 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 アプリの場合:

即時サポートが必要な既存のアプリの場合: