個人用アクセス トークンを使用する

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

個人用アクセス トークン (PAT) は、ユーザーに対して認証を行う代替パスワードAzure DevOps。 データ の PAT を作成、使用、変更、および取り消Azure DevOps。

Microsoft ツール内で作業している場合は、Microsoft アカウント (MSA) または Azure Active Directory (Azure AD) が受け入れ可能で、十分にサポートされているアプローチです。 ただし、Microsoft または Azure AD アカウントをサポートしないサードパーティ製ツールを使用している場合や、ツールに主な資格情報を提供したくない場合は、PAT を使用してリスクを制限できます。

必要なときに簡単に作成できる PAT で、必要ない場合は取り消しが簡単です。 Microsoft 以外のツールの PAT を設定するには 、Git 資格情報マネージャーを使用するか 、手動で作成します。 正しい認証メカニズムの選択に役立 認証ガイダンスを確認することをお勧めします。 堅牢性の低いソリューションを必要とする小規模なプロジェクトの場合、PAT は簡単な代替手段です。 ユーザーが資格情報マネージャーを使用している場合を限り、ユーザーは資格情報を入力する必要があります。

次の 2 つの方法のいずれかを使用して、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-1 の有効期間中に2つの通知を受け取り、残りの7日が有効期限切れになります。

PAT を作成すると、次の例のような通知が表示されます。

PAT 作成通知

PAT の有効期限が切れる7日前に、次の例のような通知が表示されます。

PAT 近い有効期限の通知

予期しない通知

予期しない PAT 通知を受け取った場合は、管理者またはツールが代理で PAT を作成した可能性があります。 次の例を参照してください。

  • git.exe 経由で Azure DevOps Git リポジトリに接続する場合。 この例では、"git: on MyMachine" のような表示名を持つトークンを作成 https://MyOrganization.visualstudio.com/ します。
  • ユーザーまたは管理者が Azure App Service web アプリのデプロイを設定すると、"サービスフック:: Azure App Service:: Deploy web app" のような表示名を持つトークンが作成されます。
  • ユーザーまたは管理者が web ロードテストをパイプラインの一部として設定すると、"Web、Oadtestcdinttoken" のような表示名でトークンが作成されます。
  • Microsoft Teams の統合メッセージング拡張機能を設定すると、"Microsoft Teams Integration" のような表示名でトークンが作成されます。

PAT がエラーに存在すると思われる場合は、PAT を 失効させることをお勧めします。 次に、パスワードを変更します。 Azure AD のユーザーとして、管理者に問い合わせて、不明なソースまたは場所から組織が使用されていないかどうかを確認してください。 また、「PAT を パブリック GitHub リポジトリに誤ってチェックインする場合の FAQ」も参照してください。

PAT を使用する

トークンは自分の id であり、使用したときに表示されます。 お客様のパスワードと同様に PAT を使用します。

  1. Git の相互作用にはユーザー名が必要です。これは、空の文字列を除く任意のものにすることができます。 PAT はパスワードとして使用されます。 また、HTTP 基本認証で使用するには、ユーザー名と PAT を Base64 でエンコードする必要があります。 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

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

PAT を HTTP ヘッダーで提供する場合は、最初にそれを 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 基本認証を有効にした場合、使用可能なが無効になります。 詳細については、「 オンプレミスの TFS での IIS 基本認証の使用」を参照してください。

その他の使用方法の例については、「 Git 資格情報マネージャー」、「 REST api」、「 Mac での NuGet」、「 クライアントのレポート」、または「 Azure DevOps CLI の概要」を参照してください。

PAT を変更する

PAT を再生成または拡張し、その スコープを変更することができます。

注意

新しいアカウントマネージャーページの新しいユーザーインターフェイスを有効にするには、「 機能の管理または有効化」を参照してください。

  1. ホームページからユーザー設定を開き、[ プロファイル] を選択します。

    マイプロファイル Team Services、プレビューページ、PAT を変更します。

  2. [セキュリティ] で、[ 個人用アクセストークン] を選択します。 変更するトークンを選択し、[ 編集] を選択します。

    [編集] を選択して PAT を変更する

  3. トークン名、適用対象の組織、トークンの有効期限、またはトークンに関連付けられているアクセスのスコープを編集し、[ 保存] を選択します。

    PAT を変更して保存する

PAT を取り消す

PAT は、さまざまな理由でいつでも取り消すことができます。

注意

新しいアカウントマネージャーページの新しいユーザーインターフェイスを有効にするには、「 機能の管理または有効化」を参照してください。

  1. ホームページからユーザー設定を開き、[ プロファイル] を選択します。

    マイプロファイル Team Services、プレビューページ、PAT を取り消します。

  2. [セキュリティ] で、[ 個人用アクセストークン] を選択します。 アクセスを取り消すトークンを選択し、[ 失効] を選択します。

    トークンまたはすべてのトークンを取り消す

  3. 確認ダイアログで [ 取り消し ] を選択します。

    取り消しの確認

FAQ

Q: PAT を更新する方法REST API。

A: はい。 PAT ライフサイクル管理 apiを使用して、その機能を更新、管理、および作成することができます。 詳細については、 FAQを参照してください。

Q: すべての Azure DevOps REST Api で基本認証を使用できますか。

A:いいえ。 基本認証はそのほとんどで使用できますが、 組織とプロファイルOAuthのみをサポートしています。

Q: 自分の PAT を GitHub のパブリックリポジトリに誤ってチェックインするとどうなりますか。

A: Azure DevOps は、GitHub のパブリックリポジトリにチェックインされた状態をスキャンします。 リークしたトークンが検出されると、すぐに、トークンの所有者に詳細な電子メール通知が送信され、Azure DevOps 組織の 監査ログにイベントが記録されます。 影響を受ける PAT をローテーションまたは取り消すことにより、影響を受けるユーザーをすぐに軽減することをお勧めします。