培训
认证
Microsoft Certified: Identity and Access Administrator Associate - Certifications
演示 Microsoft Entra ID 的功能,以将标识解决方案现代化、实现混合解决方案和实现标识治理。
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
个人访问令牌(PAT)充当用于向 Azure DevOps 进行身份验证的替代密码。 此 PAT 可识别你并确定可访问性和访问范围。 因此,请以与密码相同的谨慎级别对待 PAT。
重要
我们建议使用 Microsoft Entra 令牌。 获取有关我们减少 PAT 使用率努力的更多信息,请参阅 我们的博客。 查看我们的身份验证指南,以根据需要选择适当的身份验证机制。
当您使用 Microsoft 工具时,Microsoft 帐户(MSA)或 Microsoft Entra ID 会被识别和支持。 如果使用的工具不支持 Microsoft Entra 帐户或不想共享主要凭据,则 PAT 可能是一种合适的替代方案。 但是,我们建议尽可能使用 Microsoft Entra 令牌,而不是 PAT。
你可以通过以下方法管理 PAT:
类别 | 要求 |
---|---|
权限 | 访问和修改管理 PAT 的用户设置的权限。 - 转到 个人资料 并选择 用户设置>个人访问令牌。 如果在此处可以看到和管理 PAT,则具有必要的权限。 - 转到您的项目,并选择 项目设置中的>权限。 在列表中查找用户帐户,并检查分配给你的权限。 查找与管理令牌或用户设置相关的权限。 - 如果 组织已制定策略,Azure DevOps 管理员可能需要授予特定权限或将你添加到允许列表来创建和管理 PAT。 - PAT 与生成该令牌的用户帐户关联。 根据 PAT 执行的任务,你自己可能需要更多权限。 |
访问权限级别 | 至少具有基本访问权限。 |
任务 | 自行熟悉管理 PAT 的安全最佳做法。 请仅在需要时才使用它们,并且应始终定期轮换它们。 |
(https://dev.azure.com/{Your_Organization}
) 登录到组织。
在主页中,打开用户设置 ,然后选择“个人访问令牌”。
选择“+ 新建令牌”。
为令牌命名,选择要在其中使用令牌的组织,然后将令牌设置为在设置天数后自动过期。
选择 此令牌的范围 以授权特定 任务。
例如,若要为生成和发布代理创建令牌以向 Azure DevOps 进行身份验证,请将令牌的范围设置为代理池(读取和管理)。 若要读取审核日志事件并管理或删除流,请选择“ 读取审核日志”,然后选择“ 创建”。
备注
你可能受到限制,无法创建全作用域的 PAT。 如果是这样,则表明 Microsoft Entra ID 中的 Azure DevOps 管理员已启用一项策略,仅限你访问特定的自定义范围集。 有关详细信息,请参阅 使用策略管理 PAT/限制创建全作用域 PAT。
对于自定义的 PAT,访问组件治理 API vso.governance
所需的范围在 UI 中不可选择。
完成后,复制令牌并将其存储在安全位置。 出于安全原因,它不会再次显示。
在 Azure DevOps 中进行身份验证所需的任何位置使用 PAT。
重要
在 PAT 的生命周期内,用户会收到两条通知:创建时第一个通知,第二个通知在过期前七天收到。
创建 PAT 后,会收到类似于以下示例的通知。 此通知用于确认 PAT 已成功添加到组织。
下图显示了 PAT 过期前的七天通知示例。
有关详细信息,请参阅 配置 SMTP 服务器并为警报和反馈请求自定义电子邮件。
如果收到意外的 PAT 通知,则可能意味着管理员或工具为你创建了 PAT。 以下是一些示例:
https://dev.azure.com/{Your_Organization}
on YourMachine”的令牌。警告
PAT 充当数字标识,就像密码一样。 可以使用 PAT 作为在本地执行一次性请求或建立应用程序原型的一种快速方法。
重要
代码正常工作时,是从基本身份验证切换到 Microsoft Entra OAuth 的大好时机。 除非本文另有说明,否则,你可以在使用 PAT 的任何地方使用 Microsoft Entra ID 令牌。
可以在代码中使用 PAT 对 REST API 进行身份验证,请求并自动执行工作流。 为此,请将 PAT 包含在 HTTP 请求的授权标头中。
若要通过 HTTP 标头提供 PAT,请先将其转换为 Base64
字符串。 以下示例演示如何转换为 Base64
使用 C# 。
Authorization: Basic BASE64_USERNAME_PAT_STRING
然后,可以采用以下格式将生成的字符串作为 HTTP 标头提供。
以下示例使用 C# 中的 HttpClient 类 。
public static async void GetBuilds()
{
try
{
var personalaccesstoken = "PATFROMWEB";
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(
new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
Convert.ToBase64String(
System.Text.ASCIIEncoding.ASCII.GetBytes(
string.Format("{0}:{1}", "", personalaccesstoken))));
using (HttpResponseMessage response = client.GetAsync(
"https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=5.0").Result)
{
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
提示
使用变量时,请在字符串开头添加一个 $
,如以下示例所示。
public static async void GetBuilds()
{
try
{
var personalaccesstoken = "PATFROMWEB";
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(
new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
Convert.ToBase64String(
System.Text.ASCIIEncoding.ASCII.GetBytes(
string.Format("{0}:{1}", "", personalaccesstoken))));
using (HttpResponseMessage response = client.GetAsync(
$"https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=5.0").Result)
{
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
有关如何使用 PAT 的一些更多示例,请参阅以下文章:
执行以下步骤:
在主页中,打开用户设置,然后选择“ 配置文件”。
在“安全性”下,选择“ 个人访问令牌”。 选择要修改的令牌,然后选择 “编辑”。
编辑令牌名称、令牌过期或与令牌关联的访问范围,然后选择“ 保存”。
可以随时出于以下原因和其他原因撤销 PAT:
在主页中,打开用户设置,然后选择“ 配置文件”。
在“安全性”下,选择“ 个人访问令牌”。 选择要为其撤消访问权限的令牌,然后选择“ 撤销”。
在确认对话框中选择“ 撤销 ”。
有关详细信息,请参阅 为管理员撤销用户 PAT。
截至 2024 年 7 月,我们显著改变了 Azure DevOps 颁发的 PAT 格式。 这些更改提供了更多的安全优势,并通过我们的 泄露的 PAT 检测工具 或 合作伙伴产品/服务改进机密检测工具。 此新的 PAT 格式遵循所有Microsoft产品的建议格式。 包含更多可识别位可提高这些机密检测工具的误报检测率,使我们能够更快地缓解检测到的泄漏。
关键更改:
AZDO
签名。需要执行操作:
重要
这两种格式在可预见的将来仍然有效,但我们 积极鼓励客户过渡到新的 84 个字符的格式。 随着新格式的采用增加,我们考虑停用旧版 52 个字符的格式和该样式中颁发的所有令牌。
租户管理员可以设置策略来限制全局 PAT 创建、完全范围的 PAT 创建和长期 PAT 持续时间。 用户还可以启用策略,以自动撤销在公共代码库中检测到的泄露的 PAT。 使用这些策略来提高公司的安全性。
答:登录到 PAT 作用范围所在的组织。 您可以在同一 Microsoft Entra ID 中登录任何组织时查看所有 PAT,但只能在登录特定组织时编辑组织范围内的令牌。
答:从 Azure DevOps 中删除用户时,PAT 在 1 小时内失效。 如果组织已连接到 Microsoft Entra ID,则 PAT 也会在Microsoft Entra ID 中失效,因为它属于用户。 建议将 PAT 轮换到另一个用户或服务帐户,以使服务保持运行。
答:可以,可以使用 PAT 生命周期管理 API 续订、管理和创建 PAT。
答: 不是。 可以将基本身份验证与大多数 Azure DevOps REST API 一起使用,但组织和个人资料以及 PAT 管理生命周期 API 仅支持 Microsoft Entra OAuth。 有关如何设置 Microsoft Entra 应用以调用此类 API 的示例,请参阅使用 REST API 管理 PAT。
答:Azure DevOps 扫描已签入 GitHub 上的公共存储库的 PAT。 当我们找到泄露的令牌时,我们立即向令牌所有者发送详细的电子邮件通知,并在 Azure DevOps 组织的 审核日志中记录事件。 除非你禁用了 自动撤销泄露的个人访问令牌 策略,否则我们立即撤销泄露的 PAT。 我们鼓励受影响的用户通过撤销泄露的令牌并将其替换为新令牌来缓解此问题。 有关详细信息,请参阅 自动撤销泄露的 PAT。
答: 不是。 Azure Artifacts 不支持将 PAT 作为 ApiKey 传递。 在使用本地开发环境时,建议安装 Azure Artifacts 凭据提供程序,以对 Azure Artifacts 进行身份验证。 有关详细信息,请参阅以下示例:dotnet 和 NuGet.exe。 如果要使用 Azure Pipelines 发布包,请使用 NuGet 身份验证任务对源进行身份验证。 请查看示例。
答:PAT 身份验证要求你定期使用完整的身份验证流登录到 Azure DevOps。 每 30 天登录一次就足以满足许多用户的需求,但可能需要根据Microsoft Entra 配置更频繁地登录。 如果 PAT 停止工作,请先尝试登录到组织并完成完整的身份验证提示。 如果 PAT 仍然不起作用,请检查它是否已过期。
在 Azure DevOps Server 上启用 IIS 基本身份验证会使使用 PAT 失效。 有关详细信息,请参阅本地环境中将 IIS 基本身份验证与 Azure DevOps 配合使用。
答:在 Azure DevOps 中,可以使用服务主体或托管标识创建不与特定人员绑定的访问密钥。 有关详细信息,请参阅管理服务连接和在 Azure Pipelines 中使用 Azure Key Vault 机密。
培训
认证
Microsoft Certified: Identity and Access Administrator Associate - Certifications
演示 Microsoft Entra ID 的功能,以将标识解决方案现代化、实现混合解决方案和实现标识治理。