共用方式為


快速入門:從 Python Flask Web 應用程式登入使用者並呼叫 Microsoft Graph

在本快速入門中,您會下載和執行 Python Flask Web 應用程式範例,而此範例示範如何驗證使用者並呼叫 Microsoft Graph API。 Microsoft Entra 組織中的使用者可以登入應用程式。

必要條件

步驟 1:註冊您的應用程式

提示

根據您開始使用的入口網站,本文中的步驟可能略有不同。

遵循下列步驟,以在 Microsoft Entra 系統管理中心內註冊您的應用程式:

  1. 以至少 雲端應用程式系統管理員 的身分登入 Microsoft Entra 系統管理中心
  2. 若有權存取多個租用戶,請使用頂端功能表中的 [設定] 圖示 ,以從 [目錄 + 訂用帳戶] 功能表中切換至您想要在其中註冊應用程式的租用戶。
  3. 瀏覽至 [身分識別] > [應用程式] > [應用程式註冊],然後選取 [新增註冊]
  4. 輸入您應用程式的 [名稱],例如 python-webapp
  5. 在 [支援的帳戶類型] 底下,選取 [僅在此組織目錄中的帳戶]
  6. 在 [重新導向 URI] 下方,為平台選取 [Web]
  7. 輸入重新導向 URI http://localhost:5000/getAToken。 您稍後可以變更此值。
  8. 選取註冊

步驟 2:新增用戶端密碼

範例應用程式會在要求權杖時,使用用戶端密碼來證明其身分識別。 遵循下列步驟,以為您的 Python Web 應用程式建立用戶端密碼:

  1. 在應用程式 [概觀] 頁面上,記下 [應用程式 (用戶端) 識別碼] 值以供稍後使用。
  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 的值設定為已註冊應用程式的 [應用程式 (用戶端) 識別碼] (可在概觀頁面上取得)。
    • CLIENT_SECRET 的值設定為您已在已註冊應用程式的 [憑證和祕密] 中所建立的用戶端密碼。
    • AUTHORITY 的值設定為 https://login.microsoftonline.com/<TENANT_GUID>。 應用程式註冊概觀頁面提供 [目錄 (用戶端) 識別碼]

    環境變數會在 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),然後將其貼入瀏覽器中。 建議使用私人或 Incognito 瀏覽器工作階段。

  5. 請遵循步驟,並輸入必要的詳細資料,以使用您的 Microsoft 帳戶登入。 系統會要求您提供電子郵件地址和密碼以進行登入。

  6. 應用程式會要求權限,以保持對您已授與其存取權的資料的存取,以及讓您登入並讀取設定檔,如所示。 選取 [接受]。

此圖顯示可要求同意存取所需權限的範例應用程式。

  1. 下列螢幕擷取畫面隨即出現,指出您已成功登入應用程式。

此圖顯示範例應用程式如何成功登入使用者。

運作方式

下圖示範範例應用程式的運作方式:

此圖顯示本快速入門所產生範例應用程式的運作方式。

  1. 應用程式會使用 identity 套件,以從Microsoft 身分識別平台取得存取權杖。 此套件是根據適用於 Python 的 Microsoft 驗證程式庫 (MSAL) 所建置,以簡化 Web 應用程式中的驗證和授權。

  2. 您在上一個步驟中取得的存取權杖會用作持有人權杖,以在呼叫 Microsoft Graph API 時驗證使用者。

下一步

若要深入了解,請在下列多部分教學課程系列中建置可登入使用者並呼叫受保護 Web API 的 Python Web 應用程式: