选择正确的身份验证机制
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 适用于这两者。