选择正确的身份验证机制

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

对于与 Azure DevOps Services 交互的应用程序,必须进行身份验证才能访问 REST API 等资源。 本文提供了指导,可帮助你为应用程序选择正确的身份验证机制。

下表概述了各种应用程序类型的推荐身份验证机制。 请参阅以下基本说明、示例和代码示例,帮助你入门。

应用程序类型 说明 示例 身份验证机制 代码示例
交互式客户端 (REST) 允许用户交互调用 Azure DevOps Services REST API 的客户端应用程序 枚举组织中的项目的控制台应用程序 Microsoft 身份验证库 (MSAL) sample
交互式客户端 (客户端库) 允许用户交互调用 Azure DevOps Services 客户端库的客户端应用程序 枚举分配给当前用户的 bug 的控制台应用程序 客户端库 sample
交互式 JavaScript 基于 GUI 的 JavaScript 应用程序 显示用户项目信息的 AngularJS 单页应用 Microsoft Authentication Library for JavaScript (MSAL JS) sample
个人访问令牌 (PAT) 用于访问你自己的资源的持有者令牌 使用 PAT 代替密码。
非交互式客户端 仅无外设文本客户端应用程序 显示分配给用户的所有 bug 的控制台应用 设备配置文件 sample
面向 Azure DevOps 的交互式客户端应用 允许用户交互的客户端应用程序对 Azure DevOps 用户进行身份验证 允许 Azure DevOps 用户查看分配的 bug 的控制台应用程序 客户端库 (交互式和Windows 身份验证) sample
交互式 Web 需要用户同意的基于 GUI 的 Web 应用程序 显示生成摘要的自定义 Web 仪表板 Azure DevOps OAuth sample
服务主体或托管标识 有权访问组织的 Azure DevOps 资源的应用程序 用于创建工作项的 Azure 函数 服务主体和托管标识 sample
Azure DevOps Server应用程序 使用客户端 OM 库Azure DevOps Server应用 显示团队 bug 仪表板的Azure DevOps Server扩展 客户端库 sample
Azure DevOps Services 扩展 Azure DevOps Services 扩展 敏捷卡片 VSS Web 扩展 SDK sample

有关 Azure DevOps 中的安全和标识概念的入门,请参阅 关于安全和标识。 若要详细了解如何存储凭据,请参阅 Azure DevOps 的凭据存储

启用 IIS 基本身份验证会使使用 PAC 进行Azure DevOps Server

有关详细信息,请参阅 将 IIS 基本身份验证与本地 Azure DevOps 配合使用。

常见问题 (FAQ)

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

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

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

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

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

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

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

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