Condividi tramite


Usare i token di accesso personale

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Un token di accesso personale funge da password alternativa per l'autenticazione in Azure DevOps. Questo articolo illustra la creazione, l'uso, la modifica e la revoca di PT per Azure DevOps.

Informazioni sui token di accesso personale

Usare un token di accesso personale come credenziali di sicurezza per Azure DevOps. Questo token di accesso personale identifica l'utente e determina l'accessibilità e l'ambito di accesso. Di conseguenza, trattare le PTE con lo stesso livello di cautela delle password.

Quando si usano gli strumenti Microsoft, l'account Microsoft (MSA) o l'ID Microsoft Entra è un metodo riconosciuto e supportato. Se si usano strumenti non Microsoft che non supportano gli account Microsoft o Microsoft Entra, o se si preferisce non condividere le credenziali primarie con questi strumenti, le reti PAW sono un'alternativa adatta.

Creare e gestire le reti AP usando i metodi seguenti:

Per stabilire le connessioni CONT per gli strumenti non Microsoft, è possibile usare i gestori delle credenziali Git o generarli manualmente. È consigliabile esaminare le linee guida per l'autenticazione per scegliere il meccanismo di autenticazione appropriato. Le soluzioni PAT offrono un'alternativa semplice per progetti più piccoli che non richiedono una soluzione completa. Senza un gestore delle credenziali, gli utenti inseriscono le credenziali ogni volta.

Creare un token di accesso personale

  1. Accedere all'organizzazione (https://dev.azure.com/{Your_Organization}).

  2. Dalla home page, aprire le impostazioni utente e selezionare Token di accesso personale.

    Screenshot che mostra la selezione, i token di accesso personali.

  3. Selezionare + Nuovo token.

    Screenshot che mostra la selezione Nuovo token.

  4. Assegnare un nome al token, selezionare l'organizzazione in cui si vuole usare il token e quindi impostare il token per scadere automaticamente dopo un numero di giorni impostato.

    Screenshot che mostra la voce delle informazioni di base sui token.

  5. Selezionare gli ambiti per questo token da autorizzare per le attività specifiche.

    Ad esempio, per creare un token per un agente di compilazione e versione per l'autenticazione in Azure DevOps, impostare l'ambito del token su Pool di agenti (Lettura e gestione). Per leggere gli eventi del log di controllo e gestire o eliminare flussi, selezionare Leggi log di controllo e quindi selezionare Crea.

    Screenshot che mostra gli ambiti selezionati per un pat.

    Nota

    È possibile che sia possibile limitare la creazione di PT con ambito completo. In tal caso, l'amministratore di Azure DevOps in Microsoft Entra ID ha abilitato un criterio che limita l'utente a un set di ambiti personalizzato specifico. Per altre informazioni, vedere Gestire le api con criteri/Limitare la creazione di PT con ambito completo. Per un token di accesso personale personalizzato, l'ambito necessario per l'accesso all'API di governance dei componenti, vso.governance, non è selezionabile nell'interfaccia utente.

  6. Al termine, copiare il token e archiviarlo in una posizione sicura. Per la sicurezza, non viene visualizzata di nuovo.

    Screenshot che mostra come copiare il token negli Appunti.

Usare il token di accesso personale ovunque siano necessarie le credenziali utente per l'autenticazione in Azure DevOps.

Importante

  • Considerare un pat con la stessa cautela della password e mantenerlo riservato.
  • Accedere con il nuovo PAT entro 90 giorni per le organizzazioni supportate da Microsoft Entra ID; in caso contrario, il pat diventa inattivo. Per altre informazioni, vedere Frequenza di accesso utente per l'accesso condizionale.

Notifications

Durante la durata di un pat, gli utenti ricevono due notifiche: la prima al momento della creazione e la seconda sette giorni prima della scadenza.

Dopo aver creato un pat, si riceve una notifica simile all'esempio seguente. Questa notifica viene usata per confermare che il pat personale è stato aggiunto correttamente all'organizzazione.

Screenshot che mostra la notifica pat creata.

L'immagine seguente mostra un esempio della notifica di sette giorni prima della scadenza del pat.

Screenshot che mostra la notifica pat vicino alla scadenza.

Notifica imprevista

Se viene visualizzata una notifica pat imprevista, potrebbe significare che un amministratore o uno strumento ha creato automaticamente un pat. Di seguito sono riportati alcuni esempi.

  • Un token denominato "git: https://dev.azure.com/{Your_Organization} on YourMachine" viene creato quando ci si connette a un repository Git di Azure DevOps tramite git.exe.
  • Un token denominato "Service Hooks: : app Azure Service: : Deploy Web app" viene creato quando l'utente o un amministratore configura una distribuzione di app Web del servizio app Azure.
  • Un token denominato "WebAppLoadTestCDIntToken" viene creato quando il test di carico Web viene configurato come parte di una pipeline da parte dell'utente o di un amministratore.
  • Un token denominato "Integrazione di Microsoft Teams" viene creato quando viene configurata un'estensione di messaggistica di integrazione di Microsoft Teams.

Avviso

  • Revocare il pat se si sospetta che esista in caso di errore. Seguire la procedura per revocare il token di accesso personale e modificare la password.
  • Rivolgersi all'amministratore se si è un utente di Microsoft Entra per verificare se l'organizzazione è stata accessibile da un'origine o da una posizione sconosciuta.
  • Esaminare le domande frequenti sulle archiviazioni accidentali pat nei repository GitHub pubblici.

Usare un token di accesso personale

Il pat viene usato come identità digitale, in modo analogo a una password.

Git

Le interazioni Git richiedono un nome utente, che può essere qualsiasi cosa tranne una stringa vuota. Per usare un token di accesso personale con l'autenticazione di base HTTP, Base64-encode $MyPat come illustrato nel blocco di codice seguente.

In PowerShell immettere il codice seguente.

$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

Usare i gestori delle credenziali per evitare di immettere le credenziali ogni volta e mantenere il token più sicuro:

Repository esistenti

  • Rimuovere l'origine esistente: se in precedenza è stata aggiunta l'origine usando un nome utente, rimuoverla eseguendo il comando seguente:

    git remote remove origin

  • Eseguire l'autenticazione con un token di accesso personale: se si verificano problemi con l'autenticazione standard, eseguire il comando seguente per eseguire l'autenticazione tramite la riga di comando:

    git remote add origin https://dev.azure.com/<PAT>@<company_machineName>:/<project-name>/_git/<repo_name>

    git push -u origin --all

    Fa path to git repo = /_git/do riferimento alla struttura del percorso URL usata in Azure DevOps per i repository Git. Il /_git/ segmento indica che si accede a un repository Git e sostituire do con il nome effettivo del repository. Ad esempio, se il repository è denominato my-repo, il percorso sarà '/_git/my-repo'.

  • Clonare il repository: se si usa Git ed è necessario eseguire l'autenticazione, eseguire il comando seguente:

    git clone https://{organization}@dev.azure.com/{organization}/_git/{repository}

    Sostituire {organization} con il nome dell'organizzazione di Azure DevOps e {repository} con il nome del repository.

Usare un pat nel codice

È possibile usare un token di accesso personale nel codice per autenticare le richieste API e automatizzare i flussi di lavoro. A tale scopo, includere il pat nell'intestazione di autorizzazione delle richieste HTTP.

Per fornire il pat tramite un'intestazione HTTP, convertirlo prima in una Base64 stringa. L'esempio seguente illustra come eseguire la conversione in Base64 usando C#.


Authorization: Basic BASE64_USERNAME_PAT_STRING

La stringa risultante può quindi essere fornita come intestazione HTTP nel formato seguente.

L'esempio seguente usa la classe HttpClient in 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());
    }
}

Suggerimento

Quando si usano variabili, aggiungere un oggetto $ all'inizio della stringa, come nell'esempio seguente.

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 il codice funziona, è consigliabile passare dall'autenticazione di base a OAuth.

Per altre informazioni ed esempi su come usare i tipi di accesso utente, vedere gli articoli seguenti:

Modificare un token di accesso personale

Eseguire la procedura seguente per:

  • Rigenerare un pat per creare un nuovo token, che invalida quello precedente.
  • Estendere un pat per aumentare il periodo di validità.
  • Modificare l'ambito di un token di accesso personale per modificarne le autorizzazioni.
  1. Nella home page aprire le impostazioni utente e quindi selezionare Profilo.

    Screenshot che mostra la sequenza di pulsanti da selezionare per modificare un token di accesso personale.

  2. In Sicurezza selezionare Token di accesso personali. Selezionare il token da modificare e quindi Modifica.

    Screenshot che mostra il pulsante Modifica evidenziato per modificare il token di accesso personale.

  3. Modificare il nome del token, la scadenza del token o l'ambito di accesso associato al token e quindi selezionare Salva.

    Screenshot che mostra il pat modificato.

Revocare un token di accesso personale

È possibile revocare un pat in qualsiasi momento per questi e altri motivi:

  • Revocare un pat se si sospetta che sia compromesso.
  • Revocare un token di accesso personale quando non è più necessario.
  • Revocare un token di accesso personale per applicare i criteri di sicurezza o i requisiti di conformità.
  1. Nella home page aprire le impostazioni utente e quindi selezionare Profilo.

    Screenshot che mostra la sequenza di pulsanti da selezionare, Team Services, pagina Anteprima e revocare un token di accesso personale.

  2. In Sicurezza selezionare Token di accesso personali. Selezionare il token per il quale si vuole revocare l'accesso e quindi selezionare Revoca.

    Screenshot che mostra la selezione per revocare un singolo token o tutti i token.

  3. Selezionare Revoca nella finestra di dialogo di conferma.

    Screenshot che mostra la schermata di conferma per revocare pat.

Per altre informazioni, vedere Revoke user PAT for admins .For more information, see Revoke user PAT for admins.

Modifiche al formato

A partire da luglio 2024, è stato modificato in modo significativo il formato delle api rilasciate da Azure DevOps. Queste modifiche offrono maggiori vantaggi per la sicurezza e migliorano gli strumenti di rilevamento dei segreti disponibili tramite le offerte dei partner, ad esempio GitHub Advanced Security per Azure DevOps. Questo nuovo formato PAT segue il formato consigliato in tutti i prodotti Microsoft. L'inclusione di bit più identificabili migliora la frequenza di rilevamento dei falsi positivi di questi strumenti di rilevamento dei segreti e consente di ridurre le perdite rilevate più velocemente.

Modifiche chiave:

  • Maggiore lunghezza del token: i nuovi token sono ora lunghi 84 caratteri, con 52 caratteri di dati casuali. Questa maggiore lunghezza migliora l'entropia complessiva, rendendo i token più resistenti ai potenziali attacchi di forza bruta.
  • Firma fissa: i token emessi dal servizio includono una firma fissa AZDO nelle posizioni 76-80.

Azione necessaria:

  • Rigenerare le reti PAT esistenti: è consigliabile rigenerare tutti i PT attualmente in uso per sfruttare i vantaggi di questi miglioramenti della sicurezza.
  • Supporto dell'integratore: gli integratori devono aggiornare i sistemi in modo che supportino sia la lunghezza dei token nuovi che esistenti.

Importante

Entrambi i formati rimangono validi per il prossimo futuro, ma incoraggiamo attivamente i clienti a passare al nuovo formato di 84 caratteri. Con l'adozione del nuovo formato, è consigliabile ritirare il formato di 52 caratteri precedente e tutti i token rilasciati in tale stile.

Domande frequenti

D: Perché non è possibile modificare o rigenerare un pat con ambito a una singola organizzazione?

R: Assicurarsi di aver eseguito l'accesso all'organizzazione con ambito pat. È possibile visualizzare tutti i token PAT durante l'accesso a qualsiasi organizzazione nello stesso ID Di Microsoft Entra, ma è possibile modificare solo i token con ambito organizzazione quando si è connessi all'organizzazione a cui è stato eseguito l'ambito.

D: Cosa accade a un pat se un account utente è disabilitato?

R: Quando un utente viene rimosso da Azure DevOps, il pat invalida entro 1 ora. Se l'organizzazione è connessa all'ID Microsoft Entra, il pat invalida anche nell'ID Microsoft Entra, perché appartiene all'utente. È consigliabile ruotare il token di accesso personale a un altro account utente o di servizio per mantenere i servizi in esecuzione.

D: Esiste un modo per rinnovare un pat tramite l'API REST?

R: Sì, c'è un modo per rinnovare, gestire e creare patte usando le API di gestione del ciclo di vita pat. Per altre informazioni, vedere Gestire le api REST e le domande frequenti.

D: È possibile usare l'autenticazione di base con tutte le API REST di Azure DevOps?

R: No. È possibile usare l'autenticazione di base con la maggior parte delle API REST di Azure DevOps, ma le organizzazioni e i profili supportano solo OAuth. Per altre informazioni, vedere Gestire le api REST tramite le API REST.

D: Cosa accade se si verifica accidentalmente il token di accesso personale in un repository pubblico in GitHub?

R: Azure DevOps esegue l'analisi dei PT controllati nei repository pubblici in GitHub. Quando viene rilevato un token persa, viene inviata immediatamente una notifica di posta elettronica dettagliata al proprietario del token e si registra un evento nel log di controllo dell'organizzazione Azure DevOps. A meno che non sia stato disabilitato il criterio Revoca automatica token di accesso personali persi, viene immediatamente revocato il token di accesso personale persa. Si consiglia agli utenti interessati di attenuare il problema revocando il token trapelato e sostituendolo con un nuovo token.

Per altre informazioni, vedere Revocare automaticamente le reti AP perse.For more information, see Revoke leaked PAT automatically.

D: È possibile usare un token di accesso personale come ApiKey per pubblicare pacchetti NuGet in un feed di Azure Artifacts usando la riga di comando dotnet/nuget.exe?

R: No. Azure Artifacts non supporta il passaggio di un token di accesso personale come ApiKey. Quando si usa un ambiente di sviluppo locale, è consigliabile installare il provider di credenziali di Azure Artifacts per l'autenticazione con Azure Artifacts. Per altre informazioni, vedere gli esempi seguenti: dotnet, NuGet.exe. Per pubblicare i pacchetti usando Azure Pipelines, usare l'attività Autenticazione NuGet per eseguire l'autenticazione con l'esempio di feed.

D: Perché il mio PAT smetteva di funzionare?

R: L'autenticazione pat richiede di accedere regolarmente ad Azure DevOps usando il flusso di autenticazione completo. L'accesso una volta ogni 30 giorni è sufficiente per molti utenti, ma potrebbe essere necessario accedere più frequentemente a seconda della configurazione di Microsoft Entra. Se il token di accesso personale smette di funzionare, provare prima di tutto ad accedere all'organizzazione e completare la richiesta di autenticazione completa. Se il pat non funziona ancora, verificare se è scaduto.

D: Ricerca per categorie creare chiavi di accesso non associate a una persona specifica a scopo di distribuzione?

R: In Azure DevOps è possibile creare chiavi di accesso non associate a una persona specifica usando Entità servizio o Gestisci identità. Per altre informazioni, vedere Gestire le connessioni al servizio, Usare i segreti di Azure Key Vault in Azure Pipelines.