クイック スタート:トークンを取得し、Python コンソール アプリからアプリの ID を使用して Microsoft Graph API を呼び出す

ようこそ。 ご要望のページを表示できません。 問題の修正に取り組んでいますが、次のリンクから目的の記事にアクセスできるかお試しください。

クイック スタート: Python デーモン アプリからトークンを取得し、Microsoft Graph を呼び出す

ご不便をおかけして申し訳ありませんが、問題が解決するまで今しばらくお待ちください。

このクイックスタートでは、Python アプリケーションでアプリの ID を使ってアクセス トークンを取得して、Microsoft Graph API を呼び出し、ディレクトリ内のユーザーの一覧を表示する方法を示すコード サンプルをダウンロードして実行します。 このコード サンプルでは、ユーザーの ID ではなく、アプリケーション ID を使用して、無人のジョブまたは Windows サービスを実行する方法を示します。

前提条件

このサンプルを実行するには、以下が必要です。

クイックスタート アプリをダウンロードして構成する

手順 1:Azure portal でのアプリケーションの構成

このクイックスタート用サンプル コードを動作させるには、クライアント シークレットを作成し、Graph API の User.Read.All アプリケーションのアクセス許可を追加します。

Already configuredアプリケーションはこれらの属性で構成されています。

手順 2:Python プロジェクトのダウンロード

注意

Enter_the_Supported_Account_Info_Here

この時点でアプリケーションを実行すると、HTTP 403 - Forbidden エラー "Insufficient privileges to complete the operation" が表示されます。 このエラーは、すべての "アプリ専用のアクセス許可" には管理者の同意が必要であるために発生します。ディレクトリの全体管理者がお使いのアプリケーションに同意する必要があります。 ご自身のロールに応じて、次のオプションのいずれかを選択します。

グローバル テナント管理者

全体管理者の場合は、[API のアクセス許可] ページに移動し、[Enter_the_Tenant_Name_Here に管理者の同意を与えます] を選びます。

標準ユーザー

テナントの標準ユーザーの場合は、お使いのアプリケーションに管理者の同意を与えるよう全体管理者に依頼してください。 これを行うには、次の URL を管理者に知らせます。

https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here

手順 4:アプリケーションの実行

このサンプルの依存関係を 1 回インストールする必要があります。

pip install -r requirements.txt

次に、コマンド プロンプトまたはコンソールを使用して、アプリケーションを実行します。

python confidential_client_secret_sample.py parameters.json

コンソール出力には、Microsoft Entra ディレクトリ内のユーザーの一覧を表すいくつかの Json フラグメントが表示されます。

重要

このクイック スタート アプリケーションは、クライアント シークレットを使用して、それ自体を機密クライアントとして識別します。 クライアント シークレットはプロジェクト ファイルにプレーン テキストとして追加されるため、セキュリティ上の理由から、アプリケーションを運用アプリケーションと見なす前に、クライアント シークレットの代わりに証明書を使用することをお勧めします。 証明書の使用方法の詳細については、このサンプルと同じ GitHub リポジトリの 2 つ目のフォルダー 2-Call-MsGraph-WithCertificate にあるこれらの手順を参照してください。

詳細情報

MSAL Python

MSAL Python は、ユーザーをサインインし、Microsoft ID プラットフォームによって保護されている API にアクセスするトークンを要求するために使用するライブラリです。 説明したとおり、このクイック スタートでは、委任されたアクセス許可ではなく、アプリケーション自体の ID を使用してトークンを要求しています。 ここで使用される認証フローは、" クライアント資格情報 OAuth フロー " と呼ばれます。 デーモン アプリでの MSAL Python の使用方法の詳細については、この記事を参照してください。

MSAL Python は、次の pip コマンドを実行してインストールできます。

pip install msal

MSAL の初期化

MSAL への参照を追加するには、次のコードを追加します。

import msal

続いて、次のコードを使用して MSAL を初期化します。

app = msal.ConfidentialClientApplication(
    config["client_id"], authority=config["authority"],
    client_credential=config["secret"])
各値の説明: 説明
config["secret"] Azure portal 上でアプリケーションに対して作成されるクライアント シークレット。
config["client_id"] Azure portal に登録されているアプリケーションの "アプリケーション (クライアント) ID"。 この値は、Azure portal のアプリの [概要] ページで確認できます。
config["authority"] ユーザーが認証するための STS エンドポイント。 通常、パブリック クラウド上では https://login.microsoftonline.com/{tenant} です。{tenant} はご自分のテナントの名前またはテナント ID です。

詳細については、ConfidentialClientApplication のリファレンス ドキュメントを参照してください。

トークンの要求

アプリの ID を使用してトークンを要求するには、AcquireTokenForClient メソッドを使用します。

result = None
result = app.acquire_token_silent(config["scope"], account=None)

if not result:
    logging.info("No suitable token exists in cache. Let's get a new one from Azure AD.")
    result = app.acquire_token_for_client(scopes=config["scope"])
各値の説明: 説明
config["scope"] 要求されるスコープが含まれています。 機密クライアントの場合は、{Application ID URI}/.default のような形式を使用して、要求されるスコープが Azure portal で設定されるアプリ オブジェクト内に静的に定義されたものであることを示す必要があります (Microsoft Graph では、{Application ID URI}https://graph.microsoft.com を指します)。 カスタム Web API の場合、{Application ID URI} は、Azure portal で [アプリの登録][API の公開] セクションに定義されます。

詳細については、AcquireTokenForClient のリファレンス ドキュメントを参照してください。

ヘルプとサポート

サポートが必要な場合、問題をレポートする場合、またはサポート オプションについて知りたい場合は、開発者向けのヘルプとサポートに関するページを参照してください。

次のステップ

デーモン アプリケーションの詳細については、シナリオのランディング ページを参照してください。