选择正确的身份验证机制

Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018

对于与 Azure DevOps Services 接口的应用程序,必须进行身份验证才能访问 REST API 等资源。 我们知道,Azure DevOps Services提供了许多不同的方法来对应用程序进行身份验证。 本文提供指导,帮助你为应用程序选择正确的身份验证。 下表概述了针对不同应用程序类型的推荐身份验证机制。 请参阅以下基本说明、示例和代码示例,以帮助你入门。

应用程序类型 说明 示例 身份验证机制 代码示例
交互式客户端 (REST) 客户端应用程序,允许用户交互,调用Azure DevOps Services REST API 控制台应用程序枚举组织中的项目 Microsoft 身份验证库 (MSAL) sample
交互式客户端 (客户端库) 客户端应用程序,允许用户交互,调用Azure DevOps Services客户端库 控制台应用程序枚举分配给当前用户的 bug 客户端库 sample
交互式 JavaScript 基于 GUI 的 JavaScript 应用程序 AngularJS 单页应用,显示用户的项目信息 适用于 JavaScript 的 Microsoft 身份验证库 (MSAL JS) sample
个人访问令牌 (PAT) 轻松替代常规 OAuth 令牌。 使用 PAT 代替密码。
非交互式客户端 仅无头文本客户端应用程序 显示分配给用户的所有 bug 的控制台应用 设备配置文件 sample
面向 Azure DevOps 的交互式客户端应用 客户端应用程序,允许用户交互,对 Azure DevOps 用户进行身份验证 控制台应用程序,允许 Azure DevOps 用户查看分配的 bug 客户端库 (交互式和Windows 身份验证) sample
交互式 Web 基于 GUI 的 Web 应用程序 显示生成摘要的自定义 Web 仪表板 OAuth sample
Azure DevOps Server应用程序 使用客户端 OM 库Azure DevOps Server应用 显示团队 bug 仪表板的Azure DevOps Server扩展 客户端库 sample
Azure DevOps Services扩展 Azure DevOps Services扩展 敏捷卡 VSS Web 扩展 SDK 示例演练

注意

Azure DevOps API 尚不支持通过服务主体进行非交互式服务访问,尽管它在 路线图上。 如果需要从非交互式应用程序调用 Azure DevOps API, (最终用户无法以交互方式进行身份验证(例如后台作业) ),则应使用个人访问令牌 (PAT) 。 由于这是安全凭据,因此 PAT 应存储在安全存储中,例如 Azure 密钥保管库。 如果可能,非交互式应用程序应使用托管标识访问密钥保管库,以便应用程序无需存储任何机密或凭据。

若要详细了解如何管理安全性和标识,请参阅 关于安全和标识的信息。

若要详细了解如何存储凭据,请参阅 Azure DevOps 的凭据存储

使用用于Azure DevOps Server的 PAT 启用 IIS 基本身份验证无效

详细了解如何将 IIS 基本身份验证与本地 Azure DevOps 配合使用

常见问题 (FAQ)

问:为什么我的某个服务帐户无法访问 Azure DevOps REST API?

答:服务帐户可能未“具体化”。由于无法使用没有交互式登录权限的服务帐户登录,因此请查看 此解决方法

问:我正在创建交互式客户端应用程序。 我应该使用Azure DevOps Services客户端库还是Azure DevOps Services REST API

答:建议在访问Azure DevOps Services资源时通过 REST API 使用Azure DevOps Services客户端库。 当对 REST 终结点进行版本更改时,它们更简单且更易于维护。 如果客户端库缺少功能, MSAL 是用于 REST API 的最佳身份验证机制。

问:本指南仅适用于Azure DevOps Services,还是与本地Azure DevOps Server用户相关?

答:本指南主要面向Azure DevOps Services用户。 客户端库是一系列专为扩展Azure DevOps Server功能而构建的包。 对于本地用户,我们建议使用 客户端库、Windows 身份验证或 个人访问令牌 (PAT) 对用户进行身份验证。

问:如果希望应用程序使用Azure DevOps Server和Azure DevOps Services进行身份验证,该怎么办?

答:最佳做法是为Azure DevOps Server和Azure DevOps Services提供不同的身份验证路径。 可以使用 requestContext 找出要命中哪些内容,然后为每个机制使用最佳机制。 相反,如果需要统一的解决方案, PAT 适用于这两者。