选择正确的身份验证机制

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
交互式 OAuth Web 应用 需要用户同意的基于 GUI 的 Web 应用程序 显示生成摘要的自定义 Web 仪表板 OAuth sample
非交互式客户端应用 仅无外设文本客户端应用程序 显示分配给用户的所有 bug 的控制台应用 设备配置文件 sample
个人访问令牌 (PAT) 用于访问你自己的资源的持有者令牌 使用 PAT 代替 REST 请求的密码。 不适合生成应用程序。 docs
服务器应用 使用客户端 OM 库Azure DevOps Server应用 显示团队 bug 仪表板的Azure DevOps Server扩展 客户端库 sample
服务主体应用 有权访问组织的 Azure DevOps 资源的应用程序 用于创建工作项的 Azure 函数 服务主体和托管标识 sample
Web 扩展 Azure DevOps Services 扩展 敏捷卡 扩展 VSS Web 扩展 SDK sample

有关详细信息,请参阅以下文章:

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

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

常见问题 (FAQ)

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

答:服务帐户可能没有“具体化”。没有交互式登录权限的服务帐户无法登录。 有关详细信息,请参阅 此解决方案的解决方法

问:我应该对交互式客户端应用程序使用 Azure DevOps Services 客户端库Azure DevOps Services REST API 吗?

答:建议通过 REST API 使用 Azure DevOps Services 客户端库来访问 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 适用于这两者。