快速入門:從 Python Flask Web 應用程式登入使用者並呼叫 Microsoft Graph
在本快速入門中,您會下載和執行 Python Flask Web 應用程式範例,而此範例示範如何驗證使用者並呼叫 Microsoft Graph API。 Microsoft Entra 組織中的使用者可以登入應用程式。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
- Microsoft Entra 租用戶。 如需詳細資訊,請參閱如何取得 Microsoft Entra 租用戶。
- Python 3 +
步驟 1:註冊您的應用程式
提示
根據您開始使用的入口網站,本文中的步驟可能略有不同。
遵循下列步驟,以在 Microsoft Entra 系統管理中心內註冊您的應用程式:
- 以至少 雲端應用程式系統管理員 的身分登入 Microsoft Entra 系統管理中心。
- 若有權存取多個租用戶,請使用頂端功能表中的 [設定] 圖示 ,以從 [目錄 + 訂用帳戶] 功能表中切換至您想要在其中註冊應用程式的租用戶。
- 瀏覽至 [身分識別] > [應用程式] > [應用程式註冊],然後選取 [新增註冊]。
- 輸入您應用程式的 [名稱],例如 python-webapp。
- 在 [支援的帳戶類型] 底下,選取 [僅在此組織目錄中的帳戶]。
- 在 [重新導向 URI] 下方,為平台選取 [Web]。
- 輸入重新導向 URI
http://localhost:5000/getAToken
。 您稍後可以變更此值。 - 選取註冊。
步驟 2:新增用戶端密碼
範例應用程式會在要求權杖時,使用用戶端密碼來證明其身分識別。 遵循下列步驟,以為您的 Python Web 應用程式建立用戶端密碼:
- 在應用程式 [概觀] 頁面上,記下 [應用程式 (用戶端) 識別碼] 值以供稍後使用。
- 在 [管理] 下方,選取 [憑證和祕密],然後從 [用戶端密碼] 區段中,選取 [新增用戶端密碼]。
- 輸入用戶端密碼的描述,並保留預設到期日,然後選取 [新增]。
- 將 [用戶端密碼] 的 [值] 儲存至安全位置。 您需要此值來設定程式碼,而且稍後無法加以擷取。
建立機密用戶端應用程式的認證時,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
的值設定為已註冊應用程式的 [應用程式 (用戶端) 識別碼] (可在概觀頁面上取得)。 - 將
CLIENT_SECRET
的值設定為您已在已註冊應用程式的 [憑證和祕密] 中所建立的用戶端密碼。 - 將
AUTHORITY
的值設定為https://login.microsoftonline.com/<TENANT_GUID>
。 應用程式註冊概觀頁面提供 [目錄 (用戶端) 識別碼]。
環境變數會在 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),然後將其貼入瀏覽器中。 建議使用私人或 Incognito 瀏覽器工作階段。
請遵循步驟,並輸入必要的詳細資料,以使用您的 Microsoft 帳戶登入。 系統會要求您提供電子郵件地址和密碼以進行登入。
應用程式會要求權限,以保持對您已授與其存取權的資料的存取,以及讓您登入並讀取設定檔,如所示。 選取 [接受]。
- 下列螢幕擷取畫面隨即出現,指出您已成功登入應用程式。
運作方式
下圖示範範例應用程式的運作方式:
應用程式會使用
identity
套件,以從Microsoft 身分識別平台取得存取權杖。 此套件是根據適用於 Python 的 Microsoft 驗證程式庫 (MSAL) 所建置,以簡化 Web 應用程式中的驗證和授權。您在上一個步驟中取得的存取權杖會用作持有人權杖,以在呼叫 Microsoft Graph API 時驗證使用者。
下一步
若要深入了解,請在下列多部分教學課程系列中建置可登入使用者並呼叫受保護 Web API 的 Python Web 應用程式: