使用个人访问令牌

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2017

个人访问令牌 (PAT) 用作在 Azure DevOps 进行身份验证的备用密码。 了解如何创建、使用、修改和撤销 Azure DevOps 的 Pat。

如果你正在使用 Microsoft 工具,则 Microsoft 帐户 (MSA) 或 Azure Active Directory (Azure AD) 是一种可接受且受支持的方法。 但是,如果您使用的是不支持 Microsoft 或 Azure AD 帐户的第三方工具,或者不想向该工具提供主要凭据,则可以使用 Pat 来限制您的风险。

当你需要时,可以轻松地创建 Pat,并在不需要时轻松撤消。 若要为非 Microsoft 工具设置 Pat,请使用 Git 凭据管理器 或手动创建。 建议你查看 身份验证指南 ,以帮助你选择正确的身份验证机制。 对于需要不太可靠的解决方案的小型项目,Pat 是一种简单的替代方法。 除非用户使用凭据管理器,否则他们必须每次都输入其凭据。

可以通过以下方式之一来创建和管理 Pat:

重要

对于 Azure Active Directory 提供支持的组织,你可以使用新的 PAT 以90天的时间登录,否则将被视为非活动状态。 有关详细信息,请参阅 条件访问的用户登录频率

创建 PAT

备注

若要为"新建帐户管理员"页启用新的用户界面,请参阅 管理或启用功能

  1. 在 Azure DevOps () https://dev.azure.com/{yourorganization}

  2. 在主页中,打开用户设置,然后选择"个人访问令牌"。

    选择"个人访问令牌"

  3. 然后选择 "+ 新建令牌"。

    选择要创建的新令牌

  4. 为令牌命名,选择要使用该令牌的组织,然后选择令牌的有效期。

    输入基本令牌信息

  5. 选择 此令牌 的范围,以授权 执行特定任务

    例如,若要创建令牌以使生成和发布代理 能够向 Azure DevOps Services 进行身份验证,请限制令牌的作用域,以"代理池 (读取&管理) 。 若要读取审核日志事件以及管理和删除流,请选择"读取审核日志",然后选择"创建 "。

    选择 PAT 的范围

  6. 完成后,请确保复制令牌。 为了安全,它不会再次显示。 使用此令牌作为密码。

    将令牌复制到剪贴板

  1. 登录到 Web 门户 https://{server}:8080/tfs/ () 。

  2. 在主页中,打开个人资料。 转到安全详细信息。

    主页,打开个人资料,转到"安全性"

  3. 创建个人访问令牌。

    添加个人访问令牌

  4. 为令牌命名。 选择令牌的有效期。

    如果具有多个组织,还可以选择要使用该令牌的组织。

    为令牌命名,选择一个生命周期。 如果使用Azure DevOps Services,请选择令牌的帐户

  5. 选择 此令牌 的范围,以授权 执行特定任务

    例如,若要创建令牌以使生成和发布代理 能够进行身份验证,将令牌的范围限制为代理池 (读取和管理) 。

  6. 完成后,请确保复制 令牌。 为了安全,它不会再次显示。 使用此令牌作为密码。 选择“关闭”。

    使用令牌作为 Git 工具或应用的密码


创建 PAT 后,可以在用户凭据所需的任何位置使用它,以在 Azure DevOps。

通知

用户在 PAT 生存期内收到两个通知 - 一个在创建时,另一个在过期前七天。

创建 PAT 后,你会收到类似于以下示例的通知。

PAT 创建的通知

在 PAT 过期前 7 天,你会收到类似于以下示例的通知。

PAT 即将过期通知

意外通知

如果收到意外的 PAT 通知,管理员或工具可能代表你创建了 PAT。 请参阅以下示例。

  • 通过 git 存储库Azure DevOps Git 存储库时git.exe。 它会创建一个显示名称为"git: on https://MyOrganization.visualstudio.com/ MyMachine"的令牌。
  • 当你或管理员设置 Azure 应用服务 Web 应用部署时,它会创建一个显示名称为"服务挂钩: : Azure 应用服务: :部署 Web 应用"的令牌。
  • 当你或管理员设置 Web 负载测试时,作为管道的一部分,它会创建一个显示名称为"WebAppLoadTestCDIntToken"的令牌。
  • 当Microsoft Teams集成消息扩展时,它会创建一个显示名称为"Microsoft Teams集成"的令牌。

如果认为 PAT 存在错误,建议撤销 PAT。 然后,更改密码。 作为Azure AD,请与管理员联系,查看组织是否从未知源或位置使用。 另请参阅有关意外签入到公共存储库的PAT GitHub常见问题

使用 PAT

令牌是标识,在使用时表示你。 像对待密码一样对待和使用 PAT。

  1. Git 交互需要用户名,可以是空字符串以外的任何内容。 PAT 用作密码。 此外,你必须对用户名进行 Base64 编码,并使用 PAT 进行 HTTP 基本身份验证。 在 Linux 或 macOS 上的 Bash 中,可以输入:
MY_PAT=yourPAT # replace "yourPAT" with your actual PAT
B64_PAT=$(printf "%s"":$MY_PAT" | base64)
git -c http.extraHeader="Authorization: Basic ${B64_PAT}" clone https://dev.azure.com/yourOrgName/yourProjectName/_git/yourRepoName 

提示

对于现有存储库,如果已使用用户名添加源,请首先运行以下命令。
git remote remove origin
否则,运行以下命令:
git remote add origin https://<PAT>@<company_machineName>.visualstudio.com:/<path-to-git-repo> git 存储库的路径 = /_git/<repo_name>
git push -u origin --all

在Windows,可以在 PowerShell 中执行类似的工作:

$MyPat = 'yourPAT'
$B64Pat = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":$MyPat"))
git -c http.extraHeader="Authorization: Basic $B64Pat" clone https://dev.azure.com/yourOrgName/yourProjectName/_git/yourRepoName

若要使令牌更安全,请使用凭据管理器,这样就不必每次输入凭据。 建议采用以下凭据管理器:

在代码中使用 PAT

请参阅以下示例,该示例使用 curl 获取生成列表。


curl -u username[:{personalaccesstoken}] https://dev.azure.com/{organization}/_apis/build-release/builds

如果要通过 HTTP 标头提供 PAT,请首先将其转换为 Base64 字符串 (以下示例演示如何使用 C#) 转换为 Base64。 然后,生成的字符串可以按以下格式作为 HTTP 标头提供:

Authorization: Basic BASE64_USERNAME_PAT_STRING

此处,它使用 HttpClient类 在 C# 中。

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());
    }
}

当代码正常工作时,可以开始从基本身份验证切换到OAuth。

如果为 TFS 启用 IIS 基本身份验证,则 PAT 无效。 有关详细信息,请参阅将 IIS 基本身份验证与本地 TFS 一起使用

有关如何使用 PAT 的更多示例,请参阅Git凭据管理器、REST API、NuGet Mac上的报表、报告客户端或Azure DevOps CLI 入门

修改 PAT

可以重新生成或扩展 PAT,并修改其 范围

备注

若要为"新建帐户管理员"页启用新的用户界面,请参阅 管理或启用功能

  1. 在主页中,打开用户设置,然后选择"配置文件 "。

    我的个人资料团队服务、预览页、修改 PAT。

  2. 在 "安全性" 下,选择 " 个人访问令牌"。 选择要修改的令牌,然后选择 " 编辑"。

    选择 &quot;编辑&quot; 以修改 PAT

  3. 编辑令牌名称、应用它的组织、令牌过期或与令牌关联的访问作用域,然后选择 " 保存"。

    修改并保存 PAT

撤消 PAT

出于各种原因,你可以随时撤销 PAT。

备注

若要为新的 "帐户管理器" 页启用新的用户界面,请参阅 管理或启用功能

  1. 从主页中打开用户设置,然后选择 " 配置文件"。

    我的个人资料团队服务、预览页、吊销 PAT。

  2. 在 "安全性" 下,选择 " 个人访问令牌"。 选择要撤消其访问权限的令牌,然后选择 " 撤消"。

    撤消令牌或所有令牌

  3. 在确认对话框中选择 " 撤消 "。

    确认撤消

常见问题

问:是否可以通过 REST API 续订 PAT?

答:是的,有一种方法可以使用我们的 PAT 生命周期管理 api来续订、管理和创建 pat。 有关详细信息,请阅读 Pat 中的续订/重新生成/轮换。

问:是否可以对所有 Azure DevOps REST api 使用基本身份验证?

答:否。 你可以对其中大多数用户使用基本身份验证,但 组织和配置文件 仅支持 OAuth。 有关详细信息,请参阅 使用 REST API 管理 pat

问:如果我在 GitHub 上意外地将 PAT 签入公共存储库,会发生什么情况?

答: Azure DevOps 扫描签入到 GitHub 上的公共存储库中的 pat。 找到泄漏的令牌后,会立即向令牌所有者发送详细的电子邮件通知,并将事件记录到 Azure DevOps 组织的审核日志。 我们鼓励受影响的用户通过 轮换或撤消泄露的 PAT来立即缓解。