MSAL を使用してユーザーの Microsoft Entra ID (旧称 Azure Active Directory) トークンを取得する

重要

この記事では、Microsoft 認証ライブラリ (MSAL) を使用して Microsoft Entra ID (旧称 Azure Active Directory) トークンを手動で作成する方法について説明します。

Databricks では、Azure Databricks ユーザーの Microsoft Entra ID (旧称 Azure Active Directory) トークンを手動で作成することはお勧めしません。 これは、各 Microsoft Entra ID トークンは有効期間が短く、通常は 1 時間以内に期限切れになるためです。 この時間が経過したら、代わりの Microsoft Entra ID トークンを手動で生成する必要があります。 代わりに、Databricks クライアント統合認証標準を実装している関係ツールまたは SDK のいずれかを使用してください。 これらのツールと SDK は、Azure CLI 認証を利用して、期限切れの Microsoft Entra ID トークンを自動的に生成して置き換えます。

Azure Databricks マネージド サービス プリンシパルは、Azure Databricks 内で直接管理されます。 Microsoft Entra ID マネージド サービス プリンシパルは、追加のアクセス許可が必要とされる Microsoft Entra ID 内で管理されます。 Databricks では、ほとんどのユース ケースで Azure Databricks マネージド サービス プリンシパルを使用することをお勧めします。 ただし Databricks では、Azure Databricks と他の Azure リソースを同時に認証する必要がある場合には、Microsoft Entra ID マネージド サービス プリンシパルを使用することをお勧めします。

Microsoft Entra ID マネージド サービス プリンシパルではなく Azure Databricks マネージド サービス プリンシパルを作成するには、「サービス プリンシパルを管理する」をご覧ください。

Microsoft 認証ライブラリ (MSAL) を使用して、Microsoft Entra ID アクセス トークンをプログラムによって取得できます。 この記事では、MSAL ライブラリの基本的な使用方法と、Python の例を使用した必要なユーザー入力について説明します。

Note

MSAL は、Microsoft Entra ID Authentication Library (ADAL) を置き換えます。 セキュリティ修正プログラムを含め、ADAL についてのすべての Microsoft のサポートと開発は、2022 年 6 月 30 日に終了しました。 「Microsoft 認証ライブラリ (MSAL) へのアプリケーションの移行」を参照してください。

ヒント

MSAL よりも Azure CLI の方が手順が少なくて済むため、Azure CLI を使用してユーザーの Microsoft Entra ID トークンを取得することをお勧めします。 「Azure CLI を使用してユーザーの Microsoft Entra ID (旧称 Azure Active Directory) トークンを取得する」を参照してください。

Microsoft Entra ID でサービス プリンシパルを定義し、ユーザーではなくサービス プリンシパルの Microsoft Entra ID アクセス トークンを取得することもできます。 「サービス プリンシパルの Microsoft Entra ID (旧称 Azure Active Directory) トークンを取得する」を参照してください。

Azure portal でアプリを構成する

Azure portal で Microsoft Entra ID エンドポイントにアプリケーションを登録します。 または、既に登録済みの Microsoft Entra ID アプリを使用することもできます。 詳細については、「Azure portal を使用したアプリの登録」を参照してください。

  1. Azure portal にサインインします。

    Note

    使用するポータルは、Microsoft Entra ID アプリケーションが Azure パブリック クラウド、各国のクラウドまたはソブリン クラウドのいずれで実行されるかによって異なります。 詳細については、各国のクラウドに関する記事をご覧ください。

  2. 複数のテナント、サブスクリプション、またはディレクトリにアクセスできる場合は、上部のメニューの [ディレクトリ + サブスクリプション] (フィルター付きのディレクトリ) アイコンをクリックして、アプリケーションを登録するディレクトリに切り替えます。

  3. Microsoft Entra ID を検索して選択します。

  4. [管理] で、[アプリの登録] >>[新規登録] を選択します。

  5. [名前] にアプリケーションの名前を入力します。

  6. [サポートされているアカウントの種類] セクションで、[この組織ディレクトリのみに含まれるアカウント (シングル テナント)] を選択します。

  7. [リダイレクト URL (省略可能)] セクションで、[プラットフォームの選択][パブリック クライアント/ネイティブ (モバイルとデスクトップ)] を選択し、リダイレクト URI を入力します。 次の例では、リダイレクト URI の値は http://localhost です。

    Register app

  8. [登録] をクリックします。

  9. アプリケーション ページの [概要] ページの [要点] セクションで、次の値をコピーします。

    • アプリケーション (クライアント) ID
    • ディレクトリ (テナント) ID
    • [リダイレクト URI] で、この手順で以前に入力したパブリック クライアント リダイレクト URI。

    Azure registered app overview

  10. 登録済みのアプリケーションの必要なアクセス許可に AzureDtabricks を追加します。 この手順を実行するには、管理者ユーザーである必要があります。 このアクションの実行中にアクセス許可に関連する問題が発生した場合は、管理者にお問い合わせください。

    1. アプリケーション ページの [概要] ページの [はじめに] タブで、[API アクセス許可の表示] をクリックします。

      Azure registered app settings

    2. [アクセス許可の追加] をクリックします。

      Add required permissions to app

    3. [API アクセス許可の要求] ウィンドウで、[所属する組織で使用している API] タブを選択し、AzureDatabricks を検索して、それを選択します。

      Add AzureDatabricks API permission

    4. [User_impersonation] チェックボックスをオンにし、[アクセス許可の追加] をクリックします。

      Azure app delegated permissions

    5. [# # # に管理者の同意を与えます] をクリックし、[はい]をクリックします。 このアクションを実行するには、管理者ユーザーであるか、アプリケーションに同意を付与する特権を持っている必要があります。 [# # # に管理者の同意を与えます] が表示されない場合、またはこのアクションを省略した場合は、アプリケーションを初めて使用するときに認証コード フロー (対話型)を使用して同意を得る必要があります。 その後、ユーザー名-パスワード フロー (プログラム) メソッドを使用できます。

      Add additional users and groups to app permissions

アプリケーションにユーザーを追加できます。 詳細については、Azure portal の手順では「エンタープライズ アプリケーションにユーザーアカウントを割り当てる」を、PowerShell の手順では、Microsoft Entra ID (旧称 Azure Active Directory) のアプリケーションにユーザーとグループを割り当てるに関するページを参照してください。 ユーザーは、必要なアクセス許可なしにトークンを取得することはできません。

Microsoft Entra ID アクセス トークンを取得します

Microsoft Entra ID アクセス トークンを取得するには、次のいずれかを使用できます。

次の場合は、承認コード フロー (対話型) を使用して Microsoft Entra ID アクセス トークンを取得する必要があります。

  • Microsoft Entra ID では、2 要素認証が有効になっています。
  • Microsoft Entra ID では、フェデレーション認証が有効になっています。
  • アプリケーションの登録中に、登録済みのアプリケーションに同意を付与することはできません。

ユーザー名とパスワードを使用してサインインする権限がある場合は、ユーザー名-パスワード フロー (プログラム) を使用して、Microsoft Entra ID アクセストークンを取得できます。

承認コード フロー (対話型)

承認コード フローを使用して Microsoft Entra ID アクセス トークンを取得するには、2 つの手順を実行します。

  1. ブラウザー ウィンドウを起動し、Azure ユーザー ログインを求める承認コードを要求します。 承認コードは、ユーザーが正常にログインした後に返されます。
  2. 承認コードを使用して、Microsoft Entra ID アクセス トークンを取得します。 使用する方法によっては、更新トークンも同時に返すことができ、Microsoft Entra ID アクセス トークンの更新に使用できます。

この 2 つの手順を完了する方法の1つは、Web ブラウザーと curl を使用することです。 これを行うには、Web ブラウザーを使用して承認コードを取得し、次に承認コードと curl を使用して Microsoft Entra ID アクセストークンを取得します。 この方法では、更新トークンは提供されません。

別の方法では、MSAL Python ライブラリを使用します。 これを行うには、Web ブラウザーを使用して承認コードを取得し、次に承認コードを使用してアクセストークンと更新トークンの両方を取得する単一のスクリプトを実行します。

どちらの方法も、既に Azure にサインインしていることを前提としています。 サインインしていない場合は、サインインを求めるメッセージが表示されます。

Web ブラウザーと curl を使用して Microsoft Entra ID トークンを取得する

  1. 次の情報を集めます。

    パラメーター 説明
    テナント ID Azure portal でアプリを構成する」で Microsoft Entra ID に登録した関連アプリケーションのディレクトリ (テナント) ID
    Client ID Microsoft Entra ID に登録された関連するアプリケーションのアプリケーション (クライアント) ID
    リダイレクト URI Microsoft Entra ID に登録済みの関連アプリケーションの適切なリダイレクト URI (たとえば、http://localhost)。 認証応答は、含まれている承認コードを使用してこの URI に送信されます。
  2. Web ブラウザーを使用して次の URL を参照し、承認コードを取得します。 次の URL の例のフィールドを適宜置き換えてください。 URL は単一行として送信する必要があります。読みやすくするために、次の URL に改行が追加されています。 詳しくは、「承認コードを要求する」をご覧ください。

    https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize?client_id=<client-id>
    &response_type=code
    &redirect_uri=<redirect-uri>
    &response_mode=query
    &scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default
    &state=<state>
    

    置換前のコード:

    • <tenant-id> を登録済みのアプリケーションのテナント ID で。
    • <client-id> を登録済みのアプリケーションのクライアント ID で。
    • <redirect-uri> を登録済みのアプリケーションのリダイレクト URI で。 この URI は、URL エンコード (パーセントエンコード) 形式である必要があります。 たとえば、http://localhosthttp%3A%2F%2Flocalhost です。
    • <state> をランダムな数値またはエンコードされた情報で。 情報交換の整合性を確認するには、この状態値が、この手順で後から返される URL に含まれる値と一致している必要があります。

    scope パラメーターの値は変更しないでください。 これは、Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d) のプログラム ID を、既定のスコープ (/.default%2f.default として URL エンコード) と共に表します。

    次に例を示します。

    https://login.microsoftonline.com/a1bc2d34-5e67-8f89-01ab-c2345d6c78de/oauth2/v2.0/authorize?client_id=12a34b56-789c-0d12-e3fa-b456789c0123
    &response_type=code
    &redirect_uri=http%3A%2F%2Flocalhost
    &response_mode=query
    &scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default
    &state=12345
    
  3. URL を単一行として Web ブラウザーに貼り付け、メッセージが表示されたら Azure にサインインします。

    HTTP request URL

  4. 承認コードは、返された URL の code フィールドにあります。 承認コードを安全な場所に保存します。 また、state フィールドの値が、この手順で前に指定した値と一致していることを確認してください。

    Authorization code URL

    完全に返された URL は次のようになります (簡潔にするために、ここでは、完全な code フィールド値を 0.ASkAIj...RxgFhSAA に短縮します)。

    http://localhost/?code=0.ASkAIj...RxgFhSAA&state=12345&session_state=c44574d5-38ba-4f93-b2a3-a830db8e8cdf
    
  5. 承認コードを curl と一緒に使用して、Microsoft Entra ID アクセストークンを取得します。

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token \
    -d 'client_id=<client-id>' \
    -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \
    -d 'code=<authorization-code>' \
    -d 'redirect_uri=<redirect-uri>' \
    -d 'grant_type=authorization_code' \
    -d 'state=<state>'
    

    置換前のコード:

    • <tenant-id> を登録済みのアプリケーションのテナント ID で。
    • <client-id> を登録済みのアプリケーションのクライアント ID で。
    • <authorization-code> をユーザーの承認コードで。
    • <redirect-uri> を登録済みのアプリケーションのリダイレクト URI で。 この URI は、URL エンコード (パーセントエンコード) 形式である必要があります。 たとえば、http://localhosthttp%3A%2F%2Flocalhost です。
    • <state> をランダムな数値またはエンコードされた情報で。 情報交換の整合性を確認するには、この状態値が、この手順の後からの応答ペイロードに含まれる値と一致している必要があります。

    scope パラメーターの値は変更しないでください。 これは、Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d) のプログラム ID を、既定のスコープ (/.default%2f.default として URL エンコード) と共に表します。

    次に例を示します。

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/a1bc2d34-5e67-8f89-01ab-c2345d6c78de/oauth2/v2.0/token \
    -d 'client_id=12a34b56-789c-0d12-e3fa-b456789c0123' \
    -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \
    -d 'code=0.ASkAIj...RxgFhSAA' \
    -d 'redirect_uri=http%3A%2F%2Flocalhost' \
    -d 'grant_type=authorization_code' \
    -d 'state=12345'
    

    Microsoft Entra ID トークンは、呼び出しの結果内の access_token 値の中にあります。 state 値が、この手順で前に指定した値と一致していることを確認してください。

MSAL Python ライブラリを使用して Microsoft Entra ID トークンを取得する

  1. 次の情報を集めます。

    パラメーター 説明
    テナント ID Azure portal でアプリを構成する」で Microsoft Entra ID に登録した関連アプリケーションのディレクトリ (テナント) ID
    Client ID Microsoft Entra ID に登録された関連するアプリケーションのアプリケーション (クライアント) ID

    この手順では、http://localhost が Microsoft Entra ID に登録済みの関連アプリケーションのリダイレクト URI として設定されていることを前提としています。

  2. pip install msal を実行して、ローカル コンピューターに MSAL Python SDK をインストールします。

  3. 次のコードを get-tokens.py としてローカル コンピューターに保存します。

    # Given the client ID and tenant ID for an app registered in Azure,
    # provide a <ms-entra-id> access token and a refresh token.
    
    # If the caller is not already signed in to Azure, the caller's
    # web browser will prompt the caller to sign in first.
    
    # pip install msal
    from msal import PublicClientApplication
    import sys
    
    # You can hard-code the registered app's client ID and tenant ID here,
    # or you can provide them as command-line arguments to this script.
    client_id = '<client-id>'
    tenant_id = '<tenant-id>'
    
    # Do not modify this variable. It represents the programmatic ID for
    # Azure Databricks along with the default scope of '/.default'.
    scopes = [ '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default' ]
    
    # Check for too few or too many command-line arguments.
    if (len(sys.argv) > 1) and (len(sys.argv) != 3):
      print("Usage: get-tokens.py <client ID> <tenant ID>")
      exit(1)
    
    # If the registered app's client ID and tenant ID are provided as
    # command-line variables, set them here.
    if len(sys.argv) > 1:
      client_id = sys.argv[1]
      tenant_id = sys.argv[2]
    
    app = PublicClientApplication(
      client_id = client_id,
      authority = "https://login.microsoftonline.com/" + tenant_id
    )
    
    acquire_tokens_result = app.acquire_token_interactive(
      scopes = scopes
    )
    
    if 'error' in acquire_tokens_result:
      print("Error: " + acquire_tokens_result['error'])
      print("Description: " + acquire_tokens_result['error_description'])
    else:
      print("Access token:\n")
      print(acquire_tokens_result['access_token'])
      print("\nRefresh token:\n")
      print(acquire_tokens_result['refresh_token'])
    
  4. 次のいずれかの操作を行います。

    • 前出のコードで、<client-id> を登録済みのアプリケーションのクライアント ID で、<tenant-id> を登録済みのアプリケーションのテナント ID で置換し、その後、スクリプト、たとえば python get-tokens.py を実行します。
    • スクリプト、たとえば python get-tokens.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de を実行するときに、登録済みのアプリケーションのクライアント ID と登録済みのアプリケーションのテナント ID を指定します。
  5. Web ブラウザーでプロンプトが表示されたら、Azure にサインインします。

  6. Microsoft Entra ID のアクセス トークンと更新トークンが出力に出力されます。

ユーザー名/パスワード フロー (プログラム)

  1. ユーザー名とパスワードを使用してサインインする権限がある場合は、次の情報を収集します。

    パラメーター 説明
    テナント ID Azure portal でアプリを構成する」で Microsoft Entra ID に登録した関連アプリケーションのディレクトリ (テナント) ID
    Client ID Microsoft Entra ID に登録された関連するアプリケーションのアプリケーション (クライアント) ID
    ユーザー名とパスワード テナント内のユーザーのユーザー名 (つまり、Azure portal にログインしたときの電子メールアドレス) とパスワード。

    この手順では、http://localhost が Microsoft Entra ID に登録済みの関連アプリケーションのリダイレクト URI として設定されていることを前提としています。

  2. pip install msal を実行して、ローカル コンピューターに MSAL Python SDK をインストールします。

  3. 次のコードを get-tokens-for-user.py としてローカル コンピューターに保存します。

    # Given the client ID and tenant ID for an app registered in Azure,
    # along with an Azure username and password,
    # provide a <ms-entra-id> access token and a refresh token.
    
    # If the caller is not already signed in to Azure, the caller's
    # web browser will prompt the caller to sign in first.
    
    # pip install msal
    from msal import PublicClientApplication
    import sys
    
    # You can hard-code the registered app's client ID and tenant ID here,
    # along with the Azure username and password,
    # or you can provide them as command-line arguments to this script.
    client_id = '<client-id>'
    tenant_id = '<tenant-id>'
    username = '<username>'
    password = '<password>'
    
    # Do not modify this variable. It represents the programmatic ID for
    # Azure Databricks along with the default scope of '/.default'.
    scope = [ '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default' ]
    
    # Check for too few or too many command-line arguments.
    if (len(sys.argv) > 1) and (len(sys.argv) != 5):
      print("Usage: get-tokens-for-user.py <client ID> <tenant ID> <username> <password>")
      exit(1)
    
    # If the registered app's client ID and tenant ID along with the
    # Azure username and password are provided as command-line variables,
    # set them here.
    if len(sys.argv) > 1:
      client_id = sys.argv[1]
      tenant_id = sys.argv[2]
      username = sys.argv[3]
      password = sys.argv[4]
    
    app = PublicClientApplication(
      client_id = client_id,
      authority = "https://login.microsoftonline.com/" + tenant_id
    )
    
    acquire_tokens_result = app.acquire_token_by_username_password(
      username = username,
      password = password,
      scopes = scope
    )
    
    if 'error' in acquire_tokens_result:
      print("Error: " + acquire_tokens_result['error'])
      print("Description: " + acquire_tokens_result['error_description'])
    else:
      print("Access token:\n")
      print(acquire_tokens_result['access_token'])
      print("\nRefresh token:\n")
      print(acquire_tokens_result['refresh_token'])
    
  4. 次のいずれかの操作を行います。

    • 前出のコードで、<client-id> を登録済みのアプリケーションのクライアント ID で、<tenant-id> を登録済みのアプリケーションのテナント ID で、<username> をユーザー名で、さらに <password> をパスワードで置換して、スクリプト、たとえば python get-tokens-for-user.py を実行します。
    • スクリプト、たとえば python get-tokens-for-user.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de someone@example.com "MyPa55w&rd!" を実行するときに、登録済みのアプリケーションのクライアント ID、登録済みのアプリケーションのテナント ID、ユーザー名、およびパスワードを指定します。 コマンドライン引数に特殊文字が含まれている場合は、引用符で囲む必要があります。
  5. 新しい Microsoft Entra ID のアクセス トークンと更新トークンがターミナルに出力されます。

Microsoft Entra ID アクセス トークンを使用して、Databricks REST API にアクセスする

このセクションでは、Microsoft Entra ID アクセス トークンを使用して、Databricks REST API を呼び出す方法について説明します。 次の例では、<access-token> を Microsoft Entra ID アクセス トークンで、<databricks-instance> を Azure Databricks デプロイのワークスペース単位の URL で置換します。

Python の例

この例では、Azure Databricks ワークスペースでクラスターを一覧表示する方法を示します。

import requests
import json

databricks_instance = '<databricks-instance>'
api_version = '/api/2.0'
api_command = '/clusters/list'
url = f"https://{databricks_instance}{api_version}{api_command}"
access_token = '<access-token>'

response = requests.get(
  url = url,
  headers = { 'Authorization': "Bearer " + access_token}
)

print(json.dumps(json.loads(response.text), indent = 2))

Note

管理者以外のユーザーが管理者ユーザーとしてログインする場合は、'Authorization' : 'Bearer ' ヘッダーに加えて X-Databricks-Azure-Workspace-Resource-Id ヘッダーを指定する必要があります。また、Azure のワークスペース リソースの共同作成者ロールまたは所有者ロールである必要があります。 X-Databricks-Azure-Workspace-Resource-Id 値は次のように構成します。

# ...

subscription = '<azure-subscription-id>'
resource_group = '<azure-resource-group-name>'
workspace = '<databricks-workspace-name-in-azure>'

db_resource_id = '/subscriptions/%s/resourcegroups/%s/providers/microsoft.databricks/workspaces/%s' % (
  subscription,
  resource_group,
  workspace
)

# ...

  headers = {
    'Authorization': "Bearer " + access_token,
    'X-Databricks-Azure-Workspace-Resource-Id': db_resource_id
  }

# ...

Azure でサブスクリプション、リソース、およびワークスペースの情報を取得するには、「リソースを開く」を参照してください。 ターゲット リソースを開くために、Azure Databricks サービスの種類と、ターゲット Azure Databricks ワークスペースについて把握している Azure 内のその他の情報を検索できます。

curl の例

curl -X GET \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access-token>' \
https://<databricks-instance>/api/2.0/clusters/list

Microsoft Entra ID アクセス トークンを更新する

Microsoft Entra ID アクセストークンと共に更新トークンを取得した場合は、更新トークンを使用して新しいトークンを取得できます。 既定では Microsoft Entra ID アクセス トークンの有効期間は、60 ~ 90 分 (平均で 75 分) のランダムな期間です。 Microsoft Entra ID アクセス トークンの有効期間を構成するには、Microsoft Entra ID (旧称 Azure Active Directory) で構成可能なトークンの有効期間の方法を使います。

次の例は、MSAL Python ライブラリと更新トークンを使用して新しいトークンを取得する方法を示しています。

  1. 次のコードを refresh-tokens.py としてローカル コンピューターに保存します。

    # Given the client ID and tenant ID for an app registered in Azure,
    # along with a refresh token, provide a new <ms-entra-id> access token and
    # refresh token.
    
    # If the caller is not already signed in to Azure, the caller's
    # web browser will prompt the caller to sign in first.
    
    # pip install msal
    from msal import PublicClientApplication
    import sys
    
    # You can hard-code the registered app's client ID, tenant ID,
    # and refresh token here, or you can provide them as command-line
    # arguments to this script.
    client_id = '<client-id>'
    tenant_id = '<refresh-token'
    refresh_token = '<refresh-token>'
    
    # Do not modify this variable. It represents the programmatic ID for
    # Azure Databricks along with the default scope of '.default'.
    scope = [ '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default' ]
    
    # Check for too few or too many command-line arguments.
    if (len(sys.argv) > 1) and (len(sys.argv) != 4):
      print("Usage: refresh-tokens.py <client ID> <tenant ID> <refresh token>")
      exit(1)
    
    # If the registered app's client ID, tenant ID, and refresh token are
    # provided as command-line variables, set them here.
    if len(sys.argv) > 1:
      client_id = sys.argv[1]
      tenant_id = sys.argv[2]
      refresh_token = sys.argv[3]
    
    app = PublicClientApplication(
      client_id = client_id,
      authority = "https://login.microsoftonline.com/" + tenant_id
    )
    
    acquire_tokens_result = app.acquire_token_by_refresh_token(
      refresh_token = refresh_token,
      scopes = scope
    )
    
    if 'error' in acquire_tokens_result:
      print("Error: " + acquire_tokens_result['error'])
      print("Description: " + acquire_tokens_result['error_description'])
    else:
      print("\nNew access token:\n")
      print(acquire_tokens_result['access_token'])
      print("\nNew refresh token:\n")
      print(acquire_tokens_result['refresh_token'])
    
  2. 次のいずれかの操作を行います。

    • 前出のコードで、<client-id> を登録済みのアプリケーションのクライアント ID で、<tenant-id> を登録済みのアプリケーションのテナント ID で、さらに <refresh-token> を更新トークンで置換した後、スクリプト、たとえば python get-tokens-for-user.py を実行します。
    • スクリプト、たとえば python refresh-tokens.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de "0.ASkAIj...huE84ALg" を実行するときに、登録済みのアプリケーションのクライアント ID、登録済みのアプリケーションのテナント ID、および更新トークンを指定します。 コマンドライン引数に特殊文字が含まれている場合は、引用符で囲む必要があります。
  3. 新しい Microsoft Entra ID のアクセス トークンと更新トークンがターミナルに出力されます。