Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
本文介绍 Azure DevOps 集成的身份验证方法,并帮助你为方案选择最佳选项。 新式身份验证方法(如 Microsoft Entra ID)提供增强的安全性,并为新应用程序提供最佳方法。
重要
对于与 Azure DevOps Services 集成的新应用程序,建议使用 Microsoft Entra ID 身份验证。 请谨慎使用个人访问令牌,并且仅在Microsoft Entra ID 不可用时使用它们。
OAuth 2.0 和 Microsoft Entra ID 身份验证仅适用于 Azure DevOps Services,而不适用于 Azure DevOps Server。
对于本地方案,请使用 .NET 客户端库、Windows 身份验证或 个人访问令牌。
基于场景的身份验证方法
根据应用程序类型和要求选择适当的身份验证方法:
应用程序类型 | 说明 | 示例 | 推荐的方法 | 代码示例 |
---|---|---|---|---|
Web/桌面应用 | 使用当前框架的交互式应用程序 | React 应用,.NET 桌面应用 | Microsoft Entra OAuth 与 Microsoft 身份验证库 (MSAL) | 托管客户端控制台应用 |
服务/后台应用 | 在没有用户交互的情况下运行的应用程序 | Azure Functions、后台服务 | 服务主体与托管身份 | 服务主体 |
传统客户端应用 | 使用客户端库的现有应用程序 | 使用 Azure DevOps .NET 库的控制台应用 | 使用 OAuth 的 .NET 客户端库 | 客户端库控制台应用 |
无界面/命令行界面应用 | 非交互式命令行工具 | 生成脚本,自动化工具 | 设备授权授予流 | 设备配置文件 |
Azure DevOps 扩展 | 在 Azure DevOps 中运行的扩展 | 自定义仪表板小组件和工作项窗体 | Azure DevOps Web 扩展 SDK | 添加仪表板小部件 |
Azure DevOps Server 应用 | 本地部署的 Azure DevOps Server 集成 | 自定义服务器扩展 | .NET 客户端库 或 Windows 身份验证 | 客户端库控制台应用 |
个人/临时脚本 | 个人使用的快速脚本 | PowerShell 脚本、curl 命令 | 个人访问令牌 | REST API 入门 |
入门建议
以下部分提供了在不同场景下入门的建议。
新应用程序
- 构建 Azure DevOps 与 Microsoft Entra OAuth 应用集成 ,以获得最佳安全性和将来的兼容性。
- 在服务对服务方案中使用服务主体或托管标识。
- 避免在生产应用程序中使用个人访问令牌。
现有应用程序
- 计划从个人访问令牌迁移到 Microsoft Entra ID 身份验证。
- 考虑 Azure DevOps 改进的 身份验证迁移时间线 ,并减少个人访问令牌的使用。
- 根据安全最佳做法查看当前的身份验证方法。
Azure DevOps Server
- 尽可能将 .NET 客户端库 与 Windows 身份验证配合使用。
- 对于某些 Azure DevOps Server 方案,个人访问令牌是可以接受的。
- 规划未来的 Azure DevOps Services 迁移,以利用新式身份验证。
常见问题的解答
以下部分提供常见问题的解答。
我是否应使用 Microsoft Entra ID OAuth 或个人访问令牌?
在以下方案中使用 Microsoft Entra ID OAuth:
- 新的应用程序和集成
- 需要可靠安全性的生产工作负荷
- 需要企业标识集成的应用程序
- 需要符合合规要求的长期项目
仅在以下方案中使用个人访问令牌:
- 个人脚本和即席任务
- 迁移规划过程中的旧版应用程序
- Azure DevOps Server 情况,其中新式身份验证不可用
我应该使用服务主体或用户委派进行身份验证吗?
在以下方案中使用服务主体或托管标识:
- 生成独立运行的应用程序(后台服务、自动化)
- 创建不需要用户交互的应用
- 实现服务间通信
- 构建 CI/CD 管道或自动化工作流
在以下场景中使用用户委派(OAuth 与用户同意):
- 构建代表人类用户执行操作的应用。
- 创建交互式应用,让用户使用自己的凭据登录
- 实现需要用户特定权限的功能
- 构建尊重用户个人访问权限的应用
如何使用 Azure DevOps Server 和 Azure DevOps Services 进行身份验证?
最佳做法是创建单独的身份验证路径:
- Azure DevOps Services:使用 Microsoft Entra ID OAuth。
- Azure DevOps Server:将 .NET 客户端库与 Windows 身份验证或个人访问令牌配合使用。
requestContext
使用该方法检测服务类型并应用适当的身份验证方法。
为什么我的服务帐户无法访问 Azure DevOps API?
下面是可能影响服务帐户访问的一些常见问题:
- 服务帐户未“实例化”:使用正确的登录方法。 服务帐户需要交互式登录权限或适当的Microsoft Entra ID 注册。
- 权限不足:确保服务帐户具有适当的 Azure DevOps 权限。
- 身份验证方法:使用服务主体或托管标识,而不是尝试作为服务帐户进行身份验证。
如何从个人访问令牌迁移到新式身份验证?
完成以下步骤:
确定应用程序中当前的个人访问令牌使用情况。
选择备用身份验证方法:
- 适用于用户委托场景的 Microsoft Entra ID OAuth
- 适用于服务间通信场景的服务主体
在删除任何个人访问令牌依赖项之前,请彻底测试更改。
监视并验证新的身份验证方法。
实现过程
为方案选择身份验证方法后,请完成实现:
服务应用程序: 在 Azure DevOps 中使用服务主体和托管标识
个人脚本: 使用个人访问令牌