快速入門:從 Python Flask Web 應用程式登入使用者並呼叫 Microsoft Graph
在本快速入門中,您會下載並執行 Python Flask Web 應用程式範例,示範如何驗證使用者並呼叫 Microsoft Graph API。 Microsoft Entra 組織中的使用者可以登入應用程式。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
- Microsoft Entra 租用戶。 如需詳細資訊,請參閱 如何取得 Microsoft Entra 租使用者。
- Python 3 +
步驟 1:註冊您的應用程式
提示
本文中的步驟可能會根據您從開始的入口網站稍有不同。
請遵循下列步驟,在 Microsoft Entra 系統管理中心註冊您的應用程式:
- 以至少雲端應用程式 管理員 istrator 身分登入 Microsoft Entra 系統管理中心。
- 如果您有多個租使用者的存取權,請使用頂端功能表中的 [設定] 圖示,切換至您想要從 [目錄 + 訂用帳戶] 功能表註冊應用程式的租使用者。
- 流覽至 [身分>識別應用程式> 應用程式註冊 然後選取 [新增註冊]。
- 輸入應用程式的 [名稱],例如 python-webapp。
- 在 [支援的帳戶類型] 底下,選取 [僅在此組織目錄中的帳戶]。
- 在 [重新導向 URI] 下,選取平臺的 [Web]。
- 輸入的
http://localhost:5000/getAToken
重新導向 URI。 您稍後可以變更此值。 - 選取註冊。
步驟 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 應用程式,以深入瞭解: