自承载代理身份验证选项

Azure Pipelines 提供了在注册代理时可以使用的多种身份验证选项。 这些身份验证方法仅在代理注册期间使用。 有关代理在注册后如何通信的详细信息,请参阅 代理通信

代理注册方法 Azure DevOps Services Azure DevOps Server & TFS
个人访问令牌 (PAT) 支持 使用 HTTPS 配置服务器时受支持
服务主体 (SP) 支持 当前不支持
设备代码流 (Microsoft Entra ID) 支持 当前不支持
已集成 不支持 仅限 Windows 代理
协商 不支持 仅限 Windows 代理
备用(ALT) 不支持 使用 HTTPS 配置服务器时受支持

个人访问令牌 (PAT)

代理配置过程中指定 PAT 为身份验证类型,以便在代理注册期间使用个人访问令牌进行身份验证,然后指定一个可用于代理注册的个人访问令牌 (PAT),且该令牌的作用域为代理池(读取、管理)(或如果是部署组代理,则作用域为部署组(读取、管理))。

如需更多信息,请参阅使用个人访问令牌(PAT)注册代理

服务主体

指定 SP,以便在代理配置期间选择身份验证类型,并在代理注册时使用服务主体进行身份验证。

有关详细信息,请参阅使用服务主体注册代理

设备代码流

在代理配置过程中,指定身份验证类型为 AAD,以便在代理注册期间使用设备代码流进行身份验证。

有关详细信息,请参阅 使用设备代码流注册代理。

已集成

用于代理注册的集成 Windows 身份验证仅适用于 Azure DevOps Server 和 TFS 上的 Windows 代理注册。

在配置代理时指定集成为身份验证类型,以便在代理注册期间使用集成 Windows 身份验证进行身份验证。

使用已登录用户的凭据通过 Windows 身份验证方案(如 NTLM 或 Kerberos)将 Windows 代理连接到 TFS。

若要使用此方法进行身份验证,必须先配置 TFS 服务器。

  1. 登录到运行 TFS 的计算机。

  2. 启动 Internet Information Services (IIS) 管理器。 选择 TFS 站点并确保使用有效的提供程序(如 NTLM 或 Kerberos)启用 Windows 身份验证。

IIS TFS Windows 身份验证配置的屏幕截图。

使用 NTLM 提供程序配置进行 IIS TFS Windows 身份验证的屏幕截图。

谈判

代理注册的协商身份验证方法仅适用于 Azure DevOps Server 和 TFS 上的 Windows 代理注册。

通过 Windows 身份验证方案(如 NTLM 或 Kerberos)以非登录用户身份连接到 TFS。

若要使用此方法进行身份验证,必须先配置 TFS 服务器。

  1. 登录到运行 TFS 的计算机。

  2. 启动 Internet Information Services (IIS) 管理器。 选择 TFS 站点,并确保使用 Negotiate 提供程序和其他方法(如 NTLM 或 Kerberos)启用 Windows 身份验证。

IIS TFS Windows 身份验证配置的屏幕截图。

使用协商和 NTLM 提供程序配置 使用“协商和 NTLM 提供程序配置”的 IIS TFS Windows 身份验证的屏幕截图。

备用 (ALT)

代理注册的备用(基本)身份验证方法仅在 Azure DevOps Server 和 TFS 上可用。

使用基本身份验证连接到 TFS。 若要使用此方法,必须先 在 TFS上配置 HTTPS。

若要使用此身份验证方法,必须按如下所示配置 TFS 服务器:

  1. 登录到运行 TFS 的计算机。

  2. 配置基本身份验证。 请参阅针对使用基本身份验证的 Team Foundation Server 2015 使用 tfx

注意

根据设计,需要 IIS 匿名身份验证才能使 OAuth 身份验证正常工作。 Azure DevOps 将使用此 OAuth 身份验证实现代理和管道功能。 出于此原因,即使已配置代理,如果禁用匿名身份验证,这些代理将变得不可用。 Azure DevOps 产品已有出色的安全方法。 IIS 中的 TFS/Azure DevOps 服务器应用程序不会允许未经身份验证的请求通过。 这只是让它通过 IIS Front Door 进入应用程序,从而强制 OAuth。 例如,在管道运行中,构建服务器会为每次构建生成一个与该构建相关的 OAuth 令牌,该令牌在构建完成后失效。 因此,即使令牌受到保护,如果泄露,它在构建后也是无用的,这与标识相反。 OAuth 令牌也不可用于由生成过程运行的代码(开发人员签入的单元测试)。 如果依赖于 Windows 服务所用的 Windows 身份,那么在 CI 中运行单元测试的开发人员可能会提升权限,从而访问或删除他们无权操作的代码。