次の方法で共有


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

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

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

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

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

前提条件

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

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

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

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

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

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

Note

Enter_the_Supported_Account_Info_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 のリファレンス ドキュメントを参照してください。

ヘルプとサポート

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

次のステップ

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