使用 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) 代表用户进行身份验证。
- 有关详细信息,请参阅 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 生成 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 |
MemberEntitlement Management (读取) | 授予读取用户、其许可证以及可以访问的项目和扩展的能力。 | ||
vso.memberentitlementmanagement_write |
MemberEntitlement Management (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 连接(读取和管理) | 授予读取和管理 GitHub 连接和 GitHub 存储库数据的能力 | vso.githubconnections |
|
Graph 和标识 | vso.graph |
图形(读取) | 授予读取用户、组、范围和组成员身份信息的能力。 | |
vso.graph_manage |
Graph (管理) | 授予读取用户、组、范围和组成员身份信息以及添加用户、组和管理组成员身份的功能。 | vso.graph |
|
vso.identity |
标识(读取) | 授予读取标识和组的能力。 | ||
vso.identity_manage |
标识(管理) | 授予读取、写入和管理标识和组的能力。 | vso.identity |
|
计算机组 | vso.machinegroup_manage |
部署组(读取、管理) | 提供管理部署组和代理池的功能。 | vso.agentpools_manage |
市场 | vso.gallery |
市场 | 授予对公共和私有项和发布者的读取访问权限。 | 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_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 |
服务挂钩(交互) | 授予对通过服务挂钩接收的事件进行交互和执行操作的能力。 (不再公开。 | vso.profile |
|
设置 | 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)
问:是否可以将 OAuth 与手机应用配合使用?
答: 不是。 Azure DevOps Services 仅支持 Web 服务器流,因此无法实现 OAuth,因为无法安全地存储应用机密。
问:是否可以将 OAuth 与 SOAP 终结点和 REST API 配合使用?
答: 不是。 OAuth 仅在 REST API 中受支持。