クイックスタート: Python Flask Web アプリでユーザーのサインインと Microsoft Graph の呼び出しを行う
このクイックスタートでは、ユーザーを認証し、Microsoft Graph API を呼び出す方法を実演する、Python Flask Web アプリのサンプルをダウンロードして実行します。 Microsoft Entra 組織のユーザーはアプリケーションにサインインできます。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- Microsoft Entra テナント。 詳細については、Microsoft Entra テナントを取得する方法に関するページを参照してください。
- Python 3+
手順 1:アプリケーションの登録
ヒント
この記事の手順は、開始するポータルによって若干異なる場合があります。
Microsoft Entra 管理センターにアプリケーションを登録するには、次の手順に従います。
- クラウド アプリケーション管理者以上として Microsoft Entra 管理センターにサインインします。
- 複数のテナントにアクセスできる場合は、上部のメニューの [設定] アイコン を使い、[ディレクトリとサブスクリプション] メニューからアプリケーションを登録するテナントに切り替えます。
- [ID]>[アプリケーション]>[アプリの登録] に移動し、[新規登録] を選びます。
- アプリケーションの [名前] を入力します (例: python-webapp)。
- [サポートされているアカウントの種類] で、 [この組織のディレクトリ内のアカウントのみ] を選択します。
- [リダイレクト URI] で、プラットフォームの [Web] を選択します。
- リダイレクト URI として「
http://localhost:5000/getAToken
」と入力します。 この値は後で変更できます。 - [登録] を選択します。
手順 2: クライアント シークレットを追加する
このサンプル アプリでは、トークンを要求する際に ID を証明するのに、クライアント シークレットを使用します。 Python Web アプリ用のクライアント シークレットを作成するには、次の手順に従います。
- 後で使用するために、アプリの [概要] ページで、 [アプリケーション (クライアント) ID] の値を書き留めます。
- [管理] で [証明書とシークレット] を選択し、[クライアント シークレット] セクションで、[新しいクライアント シークレット] を選択します。
- クライアント シークレットの説明を入力し、既定の有効期限のままにして、[追加] を選択します。
- クライアント シークレットの値を安全な場所に保存します。 この値はコードを構成するのに必要です。後で取得することはできません。
機密クライアント アプリケーション用の資格情報を作成する場合、Microsoft ではそのアプリケーションを運用環境に移す前に、クライアント シークレットではなく、証明書を使用することをお勧めしています。 証明書の使用方法の詳細については、これらの手順を参照してください。
手順 3: スコープを追加する
このアプリではユーザーのサインインを行うので、委任されたアクセス許可を追加する必要があります。
- [管理] で、 [API のアクセス許可]>[アクセス許可の追加] の順に選択します。
- [Microsoft API] タブが選択されていることを確認します。
- [よく使用される Microsoft API] セクションで、 [Microsoft Graph] を選択します。
- [委任されたアクセス許可] セクションで、User.Read が選択されていることを確認します。 必要に応じて検索ボックスを使用します。
- [アクセス許可の追加] を選択します.
手順 4. サンプル アプリをダウンロードする
Python コード サンプルをダウンロードするか、リポジトリを複製します。
git clone https://github.com/Azure-Samples/ms-identity-docs-code-python/
手順 5: サンプル アプリを構成する
IDE でダウンロードしたアプリケーションを開き、そのサンプル アプリのルート フォルダーに移動します。
cd flask-web-app
.env.sample をガイドとして使用して、プロジェクトのルート フォルダーに .env ファイルを作成します。
# The following variables are required for the app to run. CLIENT_ID=<Enter_your_client_id> CLIENT_SECRET=<Enter_your_client_secret> AUTHORITY=<Enter_your_authority_url>
CLIENT_ID
の値を、登録済みアプリケーションのアプリケーション (クライアント) ID に設定します。概要ページで使用できます。CLIENT_SECRET
の値を、登録済みアプリケーション用に証明書とシークレットで作成したクライアント シークレットに設定します。AUTHORITY
の値をhttps://login.microsoftonline.com/<TENANT_GUID>
に設定します。 ディレクトリ (テナント) ID は、アプリ登録の概要ページにあります。
環境変数は app_config.py で参照され、ソース管理から除外するために別の .env ファイルに保持されます。 指定された .gitignore ファイルを使用すると、.env ファイルがチェックインされなくなります。
手順 6: サンプル アプリを実行する
アプリの仮想環境を作成します。
py -m venv .venv .venv\scripts\activate
pip
を使用して要件をインストールします。pip install -r requirements.txt
コマンド ラインでアプリを実行します。 前に構成したリダイレクト URI と同じポートでアプリが実行されていることを確認します。
flask run --debug --host=localhost --port=5000
ターミナルに表示される https の URL (例: https://localhost:5000) をコピーし、ブラウザーに貼り付けます。 ブラウザーのプライベート セッションまたはシークレット セッションを使用することを推奨します。
手順に従って必要な詳細情報を入力し、Microsoft アカウントでサインインしてください。 サインインするためのメール アドレスとパスワードの指定を要求されます。
以下に示すように、アプリケーションから、アクセス権を付与したデータへのアクセスを維持し、サインインしてプロファイルを読み取るためのアクセス許可を要求されます。 [Accept](承認) を選択します。
- ユーザーがアプリケーションに正常にサインインしたことを示す、次のスクリーンショットが表示されます。
しくみ
次の図は、サンプル アプリの動作を示しています。
アプリケーションは
identity
パッケージ を使用して、Microsoft ID プラットフォームからアクセス トークンを取得します。 このパッケージは、Web アプリでの認証と認可を簡略化するために、Python 用の Microsoft Authentication Library (MSAL) 上に構築されています。前のステップで取得したアクセス トークンは、Microsoft Graph API を呼び出すときにユーザーを認証するためのベアラー トークンとして使用されます。
次のステップ
次のマルチパートのチュートリアル シリーズで、ユーザーのサインインと保護された Web API の呼び出しを行う Python Web アプリを構築して、さらに詳しく学習しましょう。