Utilizar tokens de acesso pessoal

Serviços de DevOps do Azure | Azure DevOps Server 2022 - Azure DevOps Server 2019

Você pode usar um token de acesso pessoal (PAT) como uma senha alternativa para autenticar no Azure DevOps. Neste artigo, mostramos como criar, usar, modificar e revogar PATs para o Azure DevOps.

O vídeo a seguir mostra como criar e usar um PAT.

Sobre os tokens de acesso pessoal

Um token de acesso pessoal contém as credenciais de segurança para o Azure DevOps. Este token identifica-o a si, as suas organizações acessíveis e os âmbitos de acesso. Como tal, são tão críticos como as palavras-passe, por isso deve tratá-los da mesma maneira.

Se estiver a trabalhar nas ferramentas da Microsoft, a conta Microsoft (MSA) ou o Microsoft Entra ID será uma abordagem aceitável e suportada. Mas, se estiver a trabalhar com ferramentas de terceiros que não suportam contas Microsoft ou do Microsoft Entra ou se não quiser disponibilizar as credenciais primárias à ferramenta, utilize um token de acesso pessoal para limitar o risco.

Pode criar e gerir os tokens de acesso pessoal através de uma das seguintes formas:

  • interface de utilizador nas definições do utilizador, que é descrita em detalhe neste artigo
  • através da API de Gestão do Ciclo de Vida da PAT

Para configurar PATs para ferramentas que não sejam da Microsoft, use gerenciadores de credenciais Git ou crie-os manualmente. Recomendamos que você revise nossas diretrizes de autenticação para ajudá-lo a escolher o mecanismo de autenticação correto. Em projetos mais pequenos, que exigem uma solução menos robusta, os tokens de acesso pessoal são uma alternativa simples. A menos que utilizem um gestor de credenciais, os utilizadores terão de introduzir as credenciais sempre.

Criar uma PAT

  1. Inicie sessão na sua organização (https://dev.azure.com/{yourorganization}).

  2. Na sua página inicial, abra as configurações do usuário e selecione Tokens de acesso pessoal.

    Captura de ecrã a mostrar a seleção, Tokens de Acesso Pessoal.

  3. Selecione + Novo Token.

    Captura de tela mostrando a seleção, Novo Token.

  4. Nomeie seu token, selecione a organização onde você deseja usar o token e defina seu token para expirar automaticamente após um número definido de dias.

    Captura de tela mostrando a entrada de informações básicas de token.

  5. Selecione os escopos para este token a autorizar para suas tarefas específicas.

    Por exemplo, para criar um token para permitir que um agente de compilação e liberação se autentique nos Serviços de DevOps do Azure, limite o escopo do seu token a Pools de Agentes (Ler e gerenciar). Para ler eventos de log de auditoria e gerenciar e excluir fluxos, selecione Ler Log de Auditoria e selecione Criar.

    Captura de tela mostrando escopos selecionados para um PAT.

    Nota

    Pode ser impedido de criar tokens de acesso pessoal completos. Se for esse o caso, o Administrador do Azure DevOps no Microsoft Entra ID ativou uma política que o limita a um conjunto personalizado específico de âmbitos definidos. Para obter mais informações, consulte Gerenciar PATs com políticas/Restringir a criação de PATs com escopo completo. Para um PAT personalizado definido, o escopo necessário para acessar a API de Governança de Componentes, vso.governance, não pode ser selecionado na interface do usuário.

  6. Quando terminar, copie o token e armazene-o em um local seguro. Para sua segurança, ele não é exibido novamente.

    Captura de ecrã a mostrar como copiar o token para a área de transferência.

Aviso

Trate e utilize uma PAT como a sua palavra-passe e mantenha-a secreta.

Use sua PAT em qualquer lugar em que suas credenciais de usuário sejam necessárias para autenticação no Azure DevOps.

Importante

Para organizações apoiadas pelo Microsoft Entra ID, você tem 90 dias para entrar com seu novo PAT, caso contrário, ele é considerado inativo. Para obter mais informações, consulte Frequência de entrada do usuário para acesso condicional.

Notifications

Os utilizadores recebem duas notificações durante a vida útil de uma PAT - uma aquando da criação e outra sete dias antes da expiração.

Depois de criar um PAT, você recebe uma notificação semelhante ao exemplo a seguir. Esta notificação confirma que a sua PAT foi adicionada à sua organização.

Captura de ecrã a mostrar a notificação criada pela PAT.

A imagem seguinte mostra um exemplo da notificação de sete dias antes de a PAT expirar.

Captura de ecrã a mostrar a notificação de quase expiração da PAT.

Notificação inesperada

Se receber uma notificação PAT inesperada, um administrador ou ferramenta poderá ter criado uma PAT em seu nome. Veja os exemplos que se seguem.

  • Quando você se conecta a um repositório Git do Azure DevOps por meio git.exe. ele cria um token com um nome de exibição como "git: https://MyOrganization.visualstudio.com/ on MyMachine".
  • Quando você ou um administrador configura uma implantação de aplicativo Web do Serviço de Aplicativo do Azure, ele cria um token com um nome para exibição como "Ganchos de Serviço: : Serviço de Aplicativo do Azure: : Implantar aplicativo Web".
  • Quando você ou um administrador configura o teste de carga da Web como parte de um pipeline, ele cria um token com um nome para exibição como "WebAppLoadTestCDIntToken".
  • Quando uma Extensão de Mensagens de Integração do Microsoft Teams é configurada, ela cria um token com um nome para exibição como "Integração do Microsoft Teams".

Aviso

Se acredita que existe um PAT por engano, sugerimos que revogue o PAT. Em seguida, altere a sua palavra-passe. Como utilizador do Microsoft Entra, consulte o administrador para ver se a sua organização foi utilizada a partir de uma origem ou localização desconhecida. Consulte também as Perguntas frequentes sobre o check-in acidental de uma PAT para um repositório público do GitHub.

Utilizar uma PAT

O seu PAT é a sua identidade e representa-o quando o utiliza, tal como uma palavra-passe.

Git

As interações do Git exigem um nome de usuário, que pode ser qualquer coisa, exceto a cadeia de caracteres vazia. Para utilizar uma PAT com autenticação básica HTTP, utilize Base64-encode para $MyPat, que está incluído no seguinte bloco de código.

No PowerShell, insira o código a seguir.

$MyPat = 'yourPat'
$headerValue = "Authorization: Basic " + [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":" + $MyPat))
$env:GIT_AUTH_HEADER = $headerValue

git --config-env=http.extraheader=GIT_AUTH_HEADER clone https://dev.azure.com/yourOrgName/yourProjectName/_git/yourRepoName

Para manter seu token mais seguro, use gerenciadores de credenciais para não precisar inserir suas credenciais sempre. Recomendamos o Git Credential Manager. É necessário o Git para Windows .

Acordos de recompra existentes

Para repositórios existentes, se você já adicionou a origem usando o nome de usuário, execute o seguinte comando primeiro.

git remote remove origin

Caso contrário, execute o seguinte comando.

git remote add origin https://<PAT>@<company_machineName>.visualstudio.com:/<path-to-git-repo> path to git repo = <project name>/_git/<repo_name> git push -u origin --all

Utilize uma PAT no seu código

Pode utilizar uma PAT no seu código.

Se pretender fornecer a PAT através de um cabeçalho HTTP, converta-a primeiro numa cadeia de caracteres Base64. O exemplo a seguir mostra como converter para Base64 usando C#.


Authorization: Basic BASE64_USERNAME_PAT_STRING

A cadeia de caracteres resultante pode ser fornecida como um cabeçalho HTTP no seguinte formato.

O exemplo a seguir usa a classe HttpClient em 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());
    }
}

Gorjeta

Quando você estiver usando variáveis, adicione um $ no início da cadeia de caracteres, como no exemplo a seguir.

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

Quando seu código está funcionando, é um bom momento para mudar de autenticação básica para OAuth.

Para obter mais informações e exemplos de como usar PATs, consulte os seguintes artigos:

Modificar uma PAT

Você pode regenerar ou estender um PAT e modificar seu escopo. Após a regeneração, a PAT anterior deixa de ser autorizada.

  1. Na página inicial, abra as configurações do usuário e selecione Perfil.

    Captura de tela mostrando a sequência de botões a serem selecionados para modificar um PAT.

  2. Em Segurança, selecione Tokens de acesso pessoal. Selecione o token que deseja modificar e, em seguida , Editar.

    Captura de tela mostrando o botão Editar realçado para modificar o PAT.

  3. Edite o nome do token, a expiração do token ou o escopo de acesso associado ao token e selecione Salvar.

    Captura de tela mostrando PAT modificado.

Revogar uma PAT

Pode revogar uma PAT a qualquer momento, por várias razões.

  1. Na página inicial, abra as configurações do usuário e selecione Perfil.

    Captura de tela mostrando a sequência de botões a serem selecionados, Team Services, página Visualizar e revogar um PAT.

  2. Em Segurança, selecione Tokens de acesso pessoal. Selecione o token para o qual pretende revogar o acesso e, em seguida, selecione Revogar.

    Captura de tela mostrando a seleção para revogar um único token ou todos os tokens.

  3. Selecione Revogar na caixa de diálogo de confirmação.

    Captura de tela mostrando a tela de confirmação para revogar o PAT.

FAQs

P: O que acontece a uma PAT se uma conta de utilizador estiver desativada?

R: Depois que um usuário é removido do Azure DevOps, a PAT é invalidada em 1 hora. Se a sua organização estiver ligada ao Microsoft Entra ID, a PAT também é invalidada no Microsoft Entra ID, uma vez que pertence ao utilizador. Recomendamos que o utilizador rode a sua PAT para outro utilizador ou conta de serviço para manter os serviços em execução.

P: Existe uma forma de renovar uma PAT através da API REST?

R: Sim, existe uma forma de renovar, gerir e criar PATs utilizando as nossas APIs de Gestão do Ciclo de Vida da PAT. Para obter mais informações, consulte Gerenciar PATs usando a API REST e nossas Perguntas frequentes.

P: Posso usar a autenticação básica com todas as APIs REST do Azure DevOps?

R: Não. Você pode usar a autenticação básica com a maioria das APIs REST do Azure DevOps, mas as organizações e os perfis oferecem suporte apenas ao OAuth. Para obter mais informações, consulte Gerenciar PATs usando a API REST.

P: O que acontece se eu verificar acidentalmente a minha PAT num repositório público no GitHub?

R: O Azure DevOps verifica se há PATs verificados em repositórios públicos no GitHub. Quando encontramos um token vazado, enviamos imediatamente uma notificação por email detalhada para o proprietário do token e registramos um evento no log de auditoria da sua organização do Azure DevOps. A menos que você tenha desativado a política Revogar automaticamente tokens de acesso pessoal vazados, revogamos imediatamente o PAT vazado. Encorajamos os usuários afetados a mitigar imediatamente , revogando o token vazado e substituindo-o por um novo token.

Para obter mais informações, consulte Revogar PATs vazados automaticamente.

P: Posso usar um token de acesso pessoal como uma ApiKey para publicar pacotes NuGet em um feed de Artefatos do Azure usando a linha de comando dotnet/nuget.exe?

R: Não. Os Artefactos do Azure não suportam a transmissão de um token de acesso pessoal como ApiKey. Ao utilizar um ambiente de desenvolvimento local, recomendamos que instale o Fornecedor de Credenciais dos Artefactos do Azure para se autenticar com os Artefactos do Azure. Para obter mais informações, veja os seguintes exemplos: dotnet, NuGet.exe. Se você quiser publicar seus pacotes usando o Azure Pipelines, use a tarefa NuGet Authenticate para autenticar com seu exemplo de feed.

P: Porque é que o meu PAT deixou de funcionar?

R: A autenticação PAT requer que inicie sessão regularmente no Azure DevOps utilizando o fluxo de autenticação completo. Uma vez a cada 30 dias é suficiente para muitos, mas você pode precisar entrar com mais frequência do que isso, dependendo da sua configuração do Microsoft Entra. Se a PAT deixar de funcionar, tente primeiro iniciar sessão na sua organização, garantindo que passa pelo pedido de autenticação completa. Se o seu PAT continuar a não funcionar depois disso, verifique se o PAT expirou.