Azure CLI を使用した対話形式でのサインイン

Azure CLI のログインのための既定の認証方法では、サインインに Web ブラウザーとアクセス トークンを使用します。

  1. az login コマンドを実行します。

    az login
    

    Azure CLI が既定のブラウザーを開くことができる場合、認可コード フローを開始し、既定のブラウザーを開いて Azure サインイン ページを読み込みます。

    それ以外の場合は、デバイス コード フローを開始し、ユーザーにブラウザーのページで https://aka.ms/devicelogin を開くように指示します。 次に、ご利用のターミナル内に表示されたコードを入力します。

    Web ブラウザーが使用できないか、Web ブラウザーを開けない場合は、az login --use-device-code を使用してデバイス コード フローを強制できします。

  2. ブラウザーでアカウントの資格情報を使用してサインインします。

コマンド ラインで資格情報を使用してサインインする

コマンド ラインで、Azure ユーザー資格情報を指定します。 この認証方法は、Azure CLI コマンドを学習する場合にのみ使用します。 運用レベルのアプリケーションでは、サービス プリンシパルまたはマネージド ID を使用する必要があります。

この方法は、Microsoft アカウント、または 2 要素認証が有効になっているアカウントでは機能しません。 "対話型認証が必要です" というメッセージが表示されます。

az login --user <username> --password <password>

重要

az login を対話形式で使用しているときに、コンソールにパスワードが表示されないようにするには、bash では read -s コマンドを使用します。

read -sp "Azure password: " AZ_PASS && echo && az login -u <username> -p $AZ_PASS

PowerShell では、Get-Credential コマンドレットを使用します。

$AzCred = Get-Credential -UserName <username>
az login -u $AzCred.UserName -p $AzCred.GetNetworkCredential().Password

別のテナントでサインインする

--tenant 引数を使用すると、サインインするテナントを選択できます。 この引数の値として、.onmicrosoft.com ドメインまたはテナントの Azure オブジェクト ID を指定できます。 対話形式によるサインイン方法とコマンドラインによるサインイン方法は両方とも、--tenant で機能します。

az login --tenant 00000000-0000-0000-0000-000000000000

サインイン後、アクティブなテナントを変更する場合は、アクティブなテナントを変更する方法に関するページを参照してください。

リフレッシュ トークン

ユーザー アカウントでサインインすると、Azure CLI によって、認証更新トークンが生成されて格納されます。 アクセス トークンは有効期間が短いため、アクセス トークンが発行されると同時に更新トークンが発行されます。 クライアント アプリケーションでは、必要に応じて、このリフレッシュトークンを新しいアクセス トークンに交換できます。 トークンの有効期間と期限切れの詳細については、「Microsoft ID プラットフォームの更新トークン」を参照してください。

az account get-access-token コマンドを使用して、アクセス トークンを取得します。

# get access token for the active subscription
az account get-access-token

# get access token for a specific subscription
az account get-access-token --subscription "<subscription ID or name>"

アクセス トークンの有効期限に関する追加情報を次に示します。

  • 有効期限は、MSAL ベースの Azure CLI でサポートされている形式で更新されます。
  • Azure CLI 2.54.0 以降では、az account get-access-tokenトークンの有効期限のプロパティと共にexpiresOnプロパティが返expires_onされます。
  • このプロパティは expires_on ポータブル オペレーティング システム インターフェイス (POSIX) タイムスタンプを表し、 expiresOn プロパティはローカル日時を表します。
  • 夏時間が終了しても、プロパティは expiresOn "fold" を表しません。 これにより、夏時間が採用されている国または地域で問題が発生する可能性があります。 "fold" の詳細については、「 PEP 495 – Local Time Disaiguation」を参照してください。
  • ダウンストリーム アプリケーションでは、ユニバーサルタイム コード (UTC) を使用するため、このプロパティを使用 expires_on することをお勧めします。

出力例:

{
  "accessToken": "...",
  "expiresOn": "2023-10-31 21:59:10.000000",
  "expires_on": 1698760750,
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

トラブルシューティング

既定のブラウザーが Microsoft Edge の場合、az login を使用して対話形式で Azure にサインインしようとすると、"このサイトの接続はセキュリティで保護されていません。" というエラーが発生する可能性があります。この問題を解決するには、Microsoft Edge の edge://net-internals/#hsts にアクセスしてください。 [ドメイン セキュリティ ポリシーの削除] の下に localhost を追加し、[削除] をクリックします。

関連項目