使用 OAuth 2.0 授與 REST API 的存取權
Azure DevOps Services
瞭解如何驗證 Web 應用程式使用者以進行 REST API 存取,因此您的應用程式不會繼續要求使用者名稱和密碼。
注意
下列指引適用於 Azure DevOps Services 使用者,因為 Azure DevOps Server 不支援 OAuth 2.0。 用戶端連結庫是專為擴充 Azure DevOps Server 功能而建置的一系列套件。 針對內部部署使用者,我們建議使用 用戶端連結庫、Windows 驗證或 個人存取令牌 (PAT) 代表使用者進行驗證。
關於 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 年 3 月開始,我們將停止接受新的 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
。 請考慮向使用者要求範圍同意時所需的最小範圍數目。
注意
範圍只會啟用 REST API 的存取權及特定的 Git 端點。 不支援SOAP API存取。
類別 | 範圍 | 名稱 | 高風險 | 描述 | 繼承來源 |
---|---|---|---|---|---|
進階安全性 | vso.advsec |
AdvancedSecurity (讀取) | 是的 | 授予讀取警示、結果實例及分析結果實例的權限。 | |
vso.advsec_write |
AdvancedSecurity (讀取和寫入) | 是的 | 授與在 sarif 中上傳分析的能力 | vso.advsec |
|
vso.advsec_manage |
AdvancedSecurity (讀取、寫入和管理) | 是的 | 授與在 sarif 中上傳分析的能力 | 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 |
會員權利管理(閱讀權限) | 授與讀取使用者、其授權,以及他們可存取的專案和延伸模組的能力。 | |||
vso.memberentitlementmanagement_write |
會員權益管理(撰寫) | 是的 | 授與管理使用者、其授權,以及他們可存取的專案和延伸模組的能力。 | 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 Connections(讀取和管理) | 是的 | 授與讀取和管理 GitHub 連線與 GitHub 存放庫數據的能力 | vso.githubconnections |
|
圖形和身分識別 | vso.graph |
圖表(閱讀) | 授與讀取使用者、群組、範圍和群組成員資格資訊的能力。 | ||
vso.graph_manage |
圖表(管理) | 是的 | 授與讀取使用者、群組、範圍和群組成員資格資訊的能力,以及新增使用者、群組和管理群組成員資格的能力。 | vso.graph |
|
vso.identity |
身份識別(讀取) | 授與讀取身分識別和群組的能力。 | |||
vso.identity_manage |
身分識別(管理) | 是的 | 授與讀取、寫入及管理身分識別和群組的能力。 | vso.identity |
|
機器群組 | vso.machinegroup_manage |
部署群組 (讀取、管理) | 是的 | 提供管理部署群組和代理程式集區的能力。 | vso.agentpools_manage |
市場平台 | vso.gallery |
市場 | 授與公用和私人項目和發行者的讀取許可權。 | vso.profile |
|
vso.gallery_acquire |
Marketplace (取得) | 授予讀取許可權和取得項目的能力。 | vso.gallery |
||
vso.gallery_publish |
Marketplace (發佈) | 是的 | 授與讀取許可權,同時具備上傳、更新和分享項目的能力。 | 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_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 |
|
安全性 | 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 |
服務掛勾(互動) | 授與能夠對透過服務 Hook 所接收的事件進行互動和執行操作的能力。 (不再公開。 | vso.profile |
||
設定 | vso.settings |
設定(查看) | 授與讀取設定的能力。 | ||
vso.settings_write |
設定(讀取與寫入) | 提供建立與讀取設定的能力。 | |||
Symbols | 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)
問:是否可以將 OAuth 與我的行動電話應用程式搭配使用?
A: 不可以。 Azure DevOps Services 僅支援 Web 伺服器流程,因此無法實作 OAuth,因為您無法安全地儲存應用程式密碼。
問:我可以搭配 SOAP 端點和 REST API 使用 OAuth 嗎?
A: 不可以。 只有在 REST API 中才支援 OAuth。