快速入門:使用應用程式的身分識別取得權杖,並從 Python 主控台應用程式呼叫 Microsoft Graph API
歡迎! 這可能不是您預期的頁面。 當我們處理修正程式時,此連結應會將您導向至正確的文章:
當我們努力解決問題時,也對您的不便深感抱歉,並感謝您的耐心等候。
在本快速入門中,您會下載並執行程式碼範例,該範例會示範 Python 應用程式如何使用應用程式的身分識別來取得存取權杖,以呼叫 Microsoft Graph API 及顯示目錄中的使用者清單。 此程式碼範例會示範自動作業或 Windows 服務如何使用應用程式識別來執行,而不是以使用者的身分識別執行。
必要條件
若要執行此範例,您需要:
下載並設定快速入門應用程式
步驟 1:在 Azure 入口網站中設定您的應用程式
若要讓本快速入門中的程式碼範例正常運作,請建立用戶端密碼,並新增圖形 API 的 User.Read.All 應用程式權限。
您的應用程式會使用這些屬性進行設定。
步驟 2:下載 Python 專案
注意
Enter_the_Supported_Account_Info_Here
標準使用者
如果您是租用戶的標準使用者,請要求全域管理員對應用程式授與管理員同意。 若要這樣做,請提供下列 URL 給管理員:
https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here
步驟 4:執行應用程式
您必須安裝此範例的相依性一次。
pip install -r requirements.txt
然後,透過命令提示字元或主控台執行應用程式:
python confidential_client_secret_sample.py parameters.json
您應該會在主控台輸出中看到一些 JSON 片段,代表您 Microsoft Entra 目錄中的使用者清單。
重要
此快速入門應用程式會使用用戶端密碼,將自己識別為機密用戶端。 由於用戶端密碼會以純文字形式新增至您的專案檔,因此,基於安全考量,在考慮將應用程式當作生產應用程式之前,建議您使用憑證,而非用戶端密碼。 如需關於如何使用憑證的詳細資訊,請在相同的 GitHub 存放庫 (但位於第二個資料夾 2-Call-MsGraph-WithCertificate) 中參閱此範例的這些指示。
其他相關資訊
MSAL Python
MSAL Python 是一個程式庫,用來登入使用者,以及要求所需權杖用以存取受 Microsoft 身分識別平台保護的 API。 如前所述,本快速入門會使用應用程式本身的身分識別 (而非委派的權限) 來要求權杖。 此案例所使用的驗證流程稱為用戶端認證 OAuth 流程。 如需如何搭配使用 MSAL Python 與精靈應用程式的詳細資訊,請參閱這篇文章。
您可以藉由執行下列 pip 命令來安裝 MSAL Python。
pip install msal
MSAL 初始化
您可以透過加入下列程式碼來新增 MSAL 的參考:
import msal
接著,使用下列程式碼將 MSAL 初始化:
app = msal.ConfidentialClientApplication(
config["client_id"], authority=config["authority"],
client_credential=config["secret"])
其中: 描述 config["secret"]
在 Azure 入口網站中為應用程式建立的用戶端密碼。 config["client_id"]
是註冊於 Azure 入口網站中的應用程式所具備的應用程式 (用戶端) 識別碼。 您可以在 Azure 入口網站的應用程式 [概觀] 頁面中找到此值。 config["authority"]
供使用者用於驗證的 STS 端點。 若為公用雲端,通常是 https://login.microsoftonline.com/{tenant}
,其中 {tenant} 是租用戶的名稱或租用戶識別碼。
如需詳細資訊,請參閱下列項目的參考文件:ConfidentialClientApplication
。
要求權杖
若要使用應用程式的身分識別來要求權杖,請使用 AcquireTokenForClient
方法:
result = None
result = app.acquire_token_silent(config["scope"], account=None)
if not result:
logging.info("No suitable token exists in cache. Let's get a new one from Azure AD.")
result = app.acquire_token_for_client(scopes=config["scope"])
其中: 描述 config["scope"]
包含所要求的範圍。 針對機密用戶端,這應該使用類似 {Application ID URI}/.default
的格式,以指出所要求的範圍是 Azure 入口網站中所設定應用程式物件中以靜態方式定義的範圍 (若為 Microsoft Graph,{Application ID URI}
會指向https://graph.microsoft.com
)。 自訂 Web API{Application ID URI}
的定義是在 Azure 入口網站的應用程式註冊區段下。
如需詳細資訊,請參閱下列項目的參考文件:AcquireTokenForClient
。
說明與支援
如果您需要協助、想要回報問題,或想要深入了解您的支援選項,請參閱 開發人員的協助與支援。
下一步
若要深入了解精靈應用程式,請參閱案例登陸頁面。