Share via


クイックスタート: Python Flask Web アプリでユーザーのサインインと Microsoft Graph の呼び出しを行う

このクイックスタートでは、ユーザーを認証し、Microsoft Graph API を呼び出す方法を実演する、Python Flask Web アプリのサンプルをダウンロードして実行します。 Microsoft Entra 組織のユーザーはアプリケーションにサインインできます。

前提条件

手順 1:アプリケーションの登録

ヒント

この記事の手順は、開始するポータルによって若干異なる場合があります。

Microsoft Entra 管理センターにアプリケーションを登録するには、次の手順に従います。

  1. クラウド アプリケーション管理者以上として Microsoft Entra 管理センターにサインインします。
  2. 複数のテナントにアクセスできる場合は、上部のメニューの [設定] アイコン を使い、[ディレクトリとサブスクリプション] メニューからアプリケーションを登録するテナントに切り替えます。
  3. [ID]>[アプリケーション]>[アプリの登録] に移動し、[新規登録] を選びます。
  4. アプリケーションの [名前] を入力します (例: python-webapp)。
  5. [サポートされているアカウントの種類] で、 [この組織のディレクトリ内のアカウントのみ] を選択します。
  6. [リダイレクト URI] で、プラットフォームの [Web] を選択します。
  7. リダイレクト URI として「http://localhost:5000/getAToken」と入力します。 この値は後で変更できます。
  8. [登録] を選択します。

手順 2: クライアント シークレットを追加する

このサンプル アプリでは、トークンを要求する際に ID を証明するのに、クライアント シークレットを使用します。 Python Web アプリ用のクライアント シークレットを作成するには、次の手順に従います。

  1. 後で使用するために、アプリの [概要] ページで、 [アプリケーション (クライアント) ID] の値を書き留めます。
  2. [管理][証明書とシークレット] を選択し、[クライアント シークレット] セクションで、[新しいクライアント シークレット] を選択します。
  3. クライアント シークレットの説明を入力し、既定の有効期限のままにして、[追加] を選択します。
  4. クライアント シークレットを安全な場所に保存します。 この値はコードを構成するのに必要です。後で取得することはできません。

機密クライアント アプリケーション用の資格情報を作成する場合、Microsoft ではそのアプリケーションを運用環境に移す前に、クライアント シークレットではなく、証明書を使用することをお勧めしています。 証明書の使用方法の詳細については、これらの手順を参照してください。

手順 3: スコープを追加する

このアプリではユーザーのサインインを行うので、委任されたアクセス許可を追加する必要があります。

  1. [管理] で、 [API のアクセス許可]>[アクセス許可の追加] の順に選択します。
  2. [Microsoft API] タブが選択されていることを確認します。
  3. [よく使用される Microsoft API] セクションで、 [Microsoft Graph] を選択します。
  4. [委任されたアクセス許可] セクションで、User.Read が選択されていることを確認します。 必要に応じて検索ボックスを使用します。
  5. [アクセス許可の追加] を選択します.

手順 4. サンプル アプリをダウンロードする

Python コード サンプルをダウンロードするか、リポジトリを複製します。

git clone https://github.com/Azure-Samples/ms-identity-docs-code-python/

手順 5: サンプル アプリを構成する

  1. IDE でダウンロードしたアプリケーションを開き、そのサンプル アプリのルート フォルダーに移動します。

    cd flask-web-app
    
  2. .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: サンプル アプリを実行する

  1. アプリの仮想環境を作成します。

    py -m venv .venv
    .venv\scripts\activate
    
  2. pip を使用して要件をインストールします。

    pip install -r requirements.txt
    
  3. コマンド ラインでアプリを実行します。 前に構成したリダイレクト URI と同じポートでアプリが実行されていることを確認します。

    flask run --debug --host=localhost --port=5000
    
  4. ターミナルに表示される https の URL (例: https://localhost:5000) をコピーし、ブラウザーに貼り付けます。 ブラウザーのプライベート セッションまたはシークレット セッションを使用することを推奨します。

  5. 手順に従って必要な詳細情報を入力し、Microsoft アカウントでサインインしてください。 サインインするためのメール アドレスとパスワードの指定を要求されます。

  6. 以下に示すように、アプリケーションから、アクセス権を付与したデータへのアクセスを維持し、サインインしてプロファイルを読み取るためのアクセス許可を要求されます。 [Accept](承認) を選択します。

サンプル アプリで必要なアクセス許可にアクセスするための同意が要求されていることを示す図。

  1. ユーザーがアプリケーションに正常にサインインしたことを示す、次のスクリーンショットが表示されます。

サンプル アプリでユーザーのサインインが正常に行われたことを示す図。

しくみ

次の図は、サンプル アプリの動作を示しています。

このクイックスタートで生成されたサンプル アプリの動作を示す図。

  1. アプリケーションは identity パッケージ を使用して、Microsoft ID プラットフォームからアクセス トークンを取得します。 このパッケージは、Web アプリでの認証と認可を簡略化するために、Python 用の Microsoft Authentication Library (MSAL) 上に構築されています。

  2. 前のステップで取得したアクセス トークンは、Microsoft Graph API を呼び出すときにユーザーを認証するためのベアラー トークンとして使用されます。

次のステップ

次のマルチパートのチュートリアル シリーズで、ユーザーのサインインと保護された Web API の呼び出しを行う Python Web アプリを構築して、さらに詳しく学習しましょう。