練習 - 使用 MSAL 授與 Microsoft Graph API 的存取權
在此練習中,您會設定具有權限的應用程式,並使用 MSAL 從 Microsoft Graph (MS Graph) API 存取使用者設定檔資訊。
將 Microsoft Graph 權限新增至應用程式註冊
受 Microsoft Entra ID 保護的 Web 服務會定義一組權限,用於存取該服務所公開的 API 功能和資料。 應用程式必須先要求使用者核准相關權限,才能代表使用者存取資料或採取行動。 您可以從 Azure 入口網站將這些 API 權限指派給您的應用程式註冊。 以下是將 Microsoft Graph API 權限指派給應用程式的步驟。
在 [應用程式註冊] 畫面上,選取 [API 權限],以新增應用程式所需的 API 存取權。
執行應用程式
您可以嘗試對您在上一個練習中執行的應用程式進行圖形 API 呼叫。
請開啟瀏覽器,然後瀏覽至
http://localhost:8080/msal4j-servlet-graph/。 如果您尚未登入,系統會將您重新導向至使用 Microsoft Entra ID 登入。 成功登入時,您應該會看到如下圖所示的頁面。
選取 [呼叫圖形] 以呼叫 Microsoft Graph 的
/me端點,並查看顯示的使用者詳細資料。
Microsoft Graph 存取碼概觀
您可以在範例專案的 CallGraphServlet.java 目錄下的 servlet 類別 中找到用來存取 Microsoft Graph API 的程式碼。 它會定義 /call_graph 應用程式中的端點,以對 Microsoft Graph API 的 https://graph.microsoft.com/v1.0/me 端點進行授權呼叫,並擷取登入使用者的設定檔資訊。 以下是 Graph 存取碼的詳細資料。
在 ./src/main/resources/authentication.properties 檔案中,
aad.scopes的值會設定為 User.Read 範圍。範圍會向 Microsoft Entra ID 指出應用程式要求的存取層級,並對應至應用程式註冊中的權限。 根據要求的範圍,Microsoft Entra ID 會在登入時向使用者顯示同意對話方塊。 如果使用者同意一或多個範圍,則會編碼到產生的
access_token中,在驗證回應中傳回。當使用者瀏覽至
/call_graph時,應用程式會建立 IGraphServiceClient 的執行個體 (Microsoft Graph SDK Java),並傳入登入使用者的存取權杖。 在此,Graph 用戶端會將存取權杖放在其要求的授權標頭中。 然後,應用程式會要求 Graph 用戶端呼叫 Microsoft Graph 的/me端點,以產生現行登入使用者的詳細資料。以下是應用程式開發人員為了存取
/me端點所需撰寫的所有程式碼,前提是他們已具有User.Read範圍的 Graph 服務有效的存取權杖。//CallGraphServlet.java User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();