选择正确的身份验证机制

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

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

下表概述了针对不同应用程序方案建议的身份验证概念。 请参阅随附的说明、示例和代码示例,帮助你入门。

应用程序类型 说明 示例 身份验证机制 代码示例
交互式客户端应用 (REST) 允许用户交互调用 Azure DevOps Services REST API 的客户端应用程序 枚举组织中的项目的控制台应用程序 使用 Microsoft 身份验证库 (MSAL) 的 OAuth sample
交互式客户端应用(客户端库) 允许用户交互调用 Azure DevOps Services 的客户端应用程序 客户端库 枚举分配给当前用户的 bug 的控制台应用程序 使用客户端库的 OAuth sample
非交互式客户端应用 仅无外设文本客户端应用程序 显示分配给用户的所有 bug 的控制台应用 使用设备配置文件流的 OAuth sample
个人访问令牌 (PAT) 用于访问你自己的资源的持有者令牌 使用 PAT 代替临时 REST 调用的密码。 不适合应用。 示例
服务器应用 使用客户端 OM 库Azure DevOps Server应用 显示团队 bug 仪表板的Azure DevOps Server扩展 客户端库 sample
服务主体或托管标识 具有其自身标识的应用程序 用于创建工作项的 Azure 函数 服务主体和托管标识 sample
Web 扩展 Azure DevOps Services 扩展 敏捷卡 扩展 VSS Web 扩展 SDK sample

提示

如果您要与 Microsoft Entra 帐户进行交互,我们建议希望与 Azure DevOps 服务集成的开发人员使用基于 Entra 的身份验证。 此表中的 OAuth 示例应用使用 Microsoft Entra 的标识平台进行应用开发
对于 Microsoft 帐户 (MSA) 或 Azure DevOps Server 用户身份验证,请查看客户端库PAT
阅读我们博客中的更多内容,了解我们如何降低平台中 PAT 的使用率。

常见问题 (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 适用于这两者。