Korzystanie z osobistych tokenów dostępu

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

Możesz użyć osobistego tokenu dostępu (PAT) jako alternatywnego hasła do uwierzytelniania w Azure DevOps. W tym artykule przedstawiono sposób tworzenia, używania, modyfikowania i odwoływanie paT dla Azure DevOps.

Informacje o pats

Osobisty token dostępu zawiera poświadczenia zabezpieczeń dla Azure DevOps. Osobisty token dostępu identyfikuje Użytkownika, dostępne organizacje i zakresy dostępu. W związku z tym są one tak krytyczne jak hasła, więc należy traktować je w taki sam sposób.

Jeśli pracujesz w narzędziach firmy Microsoft, twoje konto Microsoft (MSA) lub Azure Active Directory (Azure AD) jest akceptowalnym i dobrze obsługiwanym podejściem. Jeśli jednak pracujesz z narzędziami innych firm, które nie obsługują kont Microsoft lub Azure AD , lub nie chcesz podawać podstawowych poświadczeń do narzędzia, użyj paT, aby ograniczyć ryzyko.

Możesz utworzyć punkty pats i zarządzać nimi za pomocą jednego z następujących sposobów:

Aby skonfigurować usługi PATs dla narzędzi firm innych niż Microsoft, użyj menedżerów poświadczeń usługi Git lub utwórz je ręcznie. Zalecamy zapoznanie się z naszymi wskazówkami dotyczącymi uwierzytelniania , aby ułatwić wybór poprawnego mechanizmu uwierzytelniania. W przypadku mniejszych projektów, które wymagają mniej niezawodnego rozwiązania, rozwiązania PATs są prostą alternatywą. Jeśli użytkownicy nie używają menedżera poświadczeń, muszą wprowadzać swoje poświadczenia za każdym razem.

Tworzenie tokenu dostępu

Uwaga

Obrazy widoczne w portalu internetowym mogą różnić się od obrazów widocznych w tym artykule. Te różnice wynikają z aktualizacji wprowadzonych do Azure DevOps lub włączonych funkcji w wersji zapoznawczej. Włączyliśmy funkcję strony Nowy menedżer kont . Dostępne podstawowe funkcje pozostają takie same, chyba że zostały jawnie wymienione.

  1. Zaloguj się do swojej organizacji (https://dev.azure.com/{yourorganization}).

  2. Na stronie głównej otwórz ustawienia użytkownika, a następnie wybierz pozycję Osobiste tokeny dostępu.

    Select Personal Access Tokens

  3. Wybierz pozycję + Nowy token.

    Select New Token to create

  4. Nadaj tokenowi nazwę, wybierz organizację, w której chcesz użyć tokenu, a następnie ustaw token, aby automatycznie wygasał po określonej liczbie dni.

    Enter basic token information

  5. Wybierz zakresy dla tego tokenu, aby autoryzować określone zadania.

    Aby na przykład utworzyć token, aby umożliwić agentowi kompilacji i wydania uwierzytelnianie w Azure DevOps Services, ogranicz zakres tokenu do pul agentów (odczyt & zarządzania). Aby odczytać zdarzenia dziennika inspekcji oraz zarządzać strumieniami i usuwać je, wybierz pozycję Odczytaj dziennik inspekcji, a następnie wybierz pozycję Utwórz.

    Select scopes for your PAT

    Uwaga

    Tworzenie pełnych zakresów paT może być ograniczone. Jeśli tak, administrator Azure DevOps w Azure AD włączył zasady, które ograniczają użytkownika do określonego niestandardowego zdefiniowanego zestawu zakresów. Aby uzyskać więcej informacji, zobacz Manage PATs with policies/Restrict creation of full-scoped PATs (Zarządzanie punktami dostawcy z zasadami/Ograniczanie tworzenia pełnych zakresów paT). W przypadku niestandardowego zdefiniowanego tokenu dostępu wymagany zakres dostępu do interfejsu API vso.governancenadzoru składników nie jest wybierany w interfejsie użytkownika.

  6. Po zakończeniu pamiętaj, aby skopiować token i zapisać go w bezpiecznej lokalizacji. W przypadku bezpieczeństwa nie będzie on ponownie wyświetlany.

    Copy the token to your clipboard

Ostrzeżenie

Traktuj i używaj tokenu dostępu, takiego jak hasło, i zachowaj go w tajemnicy.

  1. Zaloguj się do portalu internetowego (https://{server}:8080/tfs/).

  2. Na stronie głównej otwórz profil. Przejdź do szczegółów zabezpieczeń.

    Home page, open your profile, go to Security

  3. Utwórz osobisty token dostępu.

    Add a personal access token

  4. Nadaj tokenowi nazwę. Wybierz cykl życia tokenu.

    Jeśli masz więcej niż jedną organizację, możesz również wybrać organizację, w której chcesz użyć tokenu.

    Name your token, select a lifespan. If using Azure DevOps Services, select an account for your token

  5. Wybierz zakresy dla tego tokenu, aby autoryzować określone zadania.

    Na przykład aby utworzyć token umożliwiający uwierzytelnianie agenta kompilacji i wydania, ogranicz zakres tokenu do pul agentów (odczyt, zarządzanie).

  6. Gdy wszystko będzie gotowe, pamiętaj, aby skopiować token. W przypadku bezpieczeństwa nie będzie on ponownie wyświetlany. Użyj tego tokenu jako hasła. Wybierz pozycję Zamknij.

    Use a token as the password for your Git tools or apps

Użyj swojego tokenu dostępu w dowolnym miejscu, w którym poświadczenia użytkownika są wymagane do uwierzytelniania w Azure DevOps.

Ważne

W przypadku organizacji wspieranych przez Azure Active Directory masz 90 dni na zalogowanie się przy użyciu nowego tokenu dostępu. W przeciwnym razie jest to uznawane za nieaktywne. Aby uzyskać więcej informacji, zobacz Częstotliwość logowania użytkowników dla dostępu warunkowego.

Powiadomienia

Użytkownicy otrzymują dwa powiadomienia w okresie istnienia tokenu dostępu — jeden po utworzeniu, a drugi siedem dni przed wygaśnięciem.

Po utworzeniu tokenu dostępu otrzymasz powiadomienie podobne do poniższego przykładu. To powiadomienie potwierdza, że twój osobisty token dostępu został dodany do organizacji.

PAT created notification

Na poniższej ilustracji przedstawiono przykład siedmiodniowego powiadomienia przed wygaśnięciem tokenu dostępu.

PAT near expiration notification

Nieoczekiwane powiadomienie

Jeśli otrzymasz nieoczekiwane powiadomienie o patu, administrator lub narzędzie mogło utworzyć osobisty token dostępu w Twoim imieniu. Poniżej przedstawiono przykłady.

  • Po nawiązaniu połączenia z repozytorium git Azure DevOps za pośrednictwem git.exe. Tworzy token o nazwie wyświetlanej, takiej jak "git: https://MyOrganization.visualstudio.com/ on MyMachine".
  • Gdy ty lub administrator konfigurujesz wdrożenie aplikacji internetowej Azure App Service, tworzy ona token o nazwie wyświetlanej, takiej jak "Service Hooks: : Azure App Service: : Deploy web app".
  • Gdy ty lub administrator konfigurujesz testowanie obciążenia internetowego w ramach potoku, tworzy on token o nazwie wyświetlanej, takiej jak "WebAppLoadTestCDIntToken".
  • Po skonfigurowaniu rozszerzenia Microsoft Teams Integration Messaging zostanie utworzony token o nazwie wyświetlanej, takiej jak "integracja Microsoft Teams".

Ostrzeżenie

Jeśli uważasz, że token dostępu istnieje w błędzie, sugerujemy odwołanie tokenu dostępu. Następnie zmień hasło. Jako użytkownik Azure AD sprawdź u administratora, czy Twoja organizacja została użyta z nieznanego źródła lub lokalizacji. Zobacz również często zadawane pytania dotyczące przypadkowego zaewidencjonowania tokenu dostępu do publicznego repozytorium GitHub.

Używanie tokenu dostępu

Twój osobisty token dostępu to Twoja tożsamość i reprezentuje Cię podczas jej używania, podobnie jak hasło.

Usługa Git

Interakcje z usługą Git wymagają nazwy użytkownika, która może być niczym poza pustym ciągiem. Osobisty token dostępu jest używany jako hasło. Ponadto należy zakodować nazwę użytkownika i token dostępu base64 do użycia z uwierzytelnianiem podstawowym PROTOKOŁU HTTP.

W programie PowerShell wprowadź następujący kod.

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

Aby zapewnić bezpieczeństwo tokenu, używaj menedżerów poświadczeń, aby nie trzeba było wprowadzać poświadczeń za każdym razem. Zalecamy narzędzie Git Credential Manager. Usługa Git dla Windows jest wymagana.

$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

Istniejące repozytoria

W przypadku istniejących repozytoriów, jeśli źródło już dodano przy użyciu nazwy użytkownika, uruchom najpierw następujące polecenie.

git remote remove origin

W przeciwnym razie uruchom następujące polecenie.

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

Używanie tokenu dostępu w kodzie

Możesz użyć tokenu pat w kodzie, jednak zwróć uwagę na następujące ostrzeżenie.

Ostrzeżenie

Niektóre z naszych publicznych interfejsów API nie są obecnie skojarzone z zakresem pat i w związku z tym mogą być używane tylko z "pełnym zakresem" punktów dostępu. W związku z tym ograniczenie tworzenia pełnych zakresów paT może blokować niektóre przepływy pracy. Pracujemy nad zidentyfikowaniem i udokumentowanie interfejsów API, których dotyczy problem, i ostatecznie skojarzymy je z odpowiednim zakresem. Na razie te przepływy pracy można odblokować przy użyciu listy dozwolonych.

Jeśli chcesz podać pat za pośrednictwem nagłówka HTTP, najpierw przekonwertuj go na ciąg Base64. W poniższym przykładzie pokazano, jak przekonwertować na base64 przy użyciu języka C#.


Authorization: Basic BASE64_USERNAME_PAT_STRING

Wynikowy ciąg można następnie podać jako nagłówek HTTP w następującym formacie.

W poniższym przykładzie użyto klasy HttpClient w języku 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());
    }
}

Porada

Gdy używasz zmiennych, dodaj element $ na początku ciągu, podobnie jak w poniższym przykładzie.

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

Gdy kod działa, warto przełączyć się z podstawowego uwierzytelniania na protokół OAuth.

Aby uzyskać więcej informacji i przykłady korzystania z sieci PAT, zobacz następujące artykuły:

Jeśli włączysz uwierzytelnianie podstawowe usług IIS dla serwera TFS, usługi PATs nie są prawidłowe. Aby uzyskać więcej informacji, zobacz Using IIS Basic Authentication with TFS on-premises (Używanie uwierzytelniania podstawowego usług IIS z lokalnym programem TFS).

Modyfikowanie pat

Możesz ponownie wygenerować lub rozszerzyć pat i zmodyfikować jego zakres. Po regeneracie poprzednia autoryzacja pat nie jest już autoryzowana.

  1. Na stronie głównej otwórz ustawienia użytkownika, a następnie wybierz pozycję Profil.

    My profile Team Services, Preview page, modify a PAT.

  2. W obszarze Zabezpieczenia wybierz pozycję Osobiste tokeny dostępu. Wybierz token, który chcesz zmodyfikować, a następnie pozycję Edytuj.

    Select Edit to modify PAT

  3. Edytuj nazwę tokenu, organizację, która ma zastosowanie do, wygaśnięcie tokenu lub zakres dostępu skojarzony z tokenem, a następnie wybierz pozycję Zapisz.

    Modify and Save PAT

Odwoływanie pat

W dowolnym momencie możesz odwołać pat z różnych powodów.

  1. Na stronie głównej otwórz ustawienia użytkownika, a następnie wybierz pozycję Profil.

    My profile Team Services, Preview page, revoke a PAT.

  2. W obszarze Zabezpieczenia wybierz pozycję Osobiste tokeny dostępu. Wybierz token, dla którego chcesz odwołać dostęp, a następnie wybierz pozycję Odwołaj.

    Revoke a token or all tokens

  3. Wybierz pozycję Odwołaj w oknie dialogowym potwierdzenia.

    Confirm revoke

Często zadawane pytania

Pyt.: Czy istnieje sposób odnawiania tokenu dostępu za pośrednictwem interfejsu API REST?

1: Tak, istnieje sposób odnawiania, zarządzania i tworzenia punktów dostępu przy użyciu interfejsów API zarządzania cyklem życia pat. Aby uzyskać więcej informacji, zobacz Zarządzanie punktami uprzywilejowanymi przy użyciu interfejsu API REST i często zadawanych pytań.

Pyt.: Czy mogę używać podstawowego uwierzytelniania ze wszystkimi interfejsami API REST Azure DevOps?

Odpowiedź: nie. Możesz użyć podstawowego uwierzytelniania z większością interfejsów API REST Azure DevOps, ale organizacje i profile obsługują tylko protokół OAuth. Aby uzyskać więcej informacji, zobacz Manage PATs using REST API (Zarządzanie punktami uprzywilejowanym przy użyciu interfejsu API REST).

Pyt.: Co się stanie, jeśli przypadkowo zaewidencjonuję swój osobisty dostęp do publicznego repozytorium w GitHub?

1: Azure DevOps skanuje pod kątem sieci PAT zaewidencjonowane w repozytoriach publicznych w GitHub. Po znalezieniu wycieku tokenu natychmiast wyślemy szczegółowe powiadomienie e-mail do właściciela tokenu i zarejestrujemy zdarzenie w dzienniku inspekcji organizacji Azure DevOps. Zachęcamy użytkowników dotkniętych do natychmiastowego ograniczenia poprzez rotację lub odwoływanie wycieku pat.

Istnieją zasady zarządzania wyciekowymi punktami dostępu! Aby uzyskać więcej informacji, zobacz Automatyczne odwoływanie wyciekłych punktów roboczych.