快速入門:從 Java Web 應用程式登入使用者並呼叫 Microsoft Graph API
在本快速入門中,您會下載並執行程式碼範例,示範 Java Web 應用程式如何登入使用者並呼叫 Microsoft Graph API。 來自任何 Microsoft Entra 組織的使用者可以登入應用程式。
請參閱 範例 的運作方式以取得圖例。
必要條件
若要執行此範例,您需要:
- Java Development Kit (JDK) 8 或更新版本。
- 馬文
註冊並下載您的快速入門應用程式
提示
本文中的步驟可能會根據您從開始的入口網站稍有不同。
有兩種方式可以啟動您的快速入門應用程式:express (選項 1) 和手動 (選項 2)。
選項 1:註冊並自動設定您的應用程式,然後下載程式代碼範例
- 移至 Microsoft Entra 系統管理中心 - 應用程式註冊 快速入門體驗,至少是雲端應用程式 管理員 istrator。
- 輸入應用程式的名稱,然後選取 [ 註冊]。
- 請遵循入口網站快速入門體驗中的指示,下載自動設定的應用程式程序代碼。
選項 2:註冊並手動設定應用程式和程式碼範例
步驟 1:註冊您的應用程式
若要註冊您的應用程式,並手動新增應用程式的註冊資訊,請遵循下列步驟:
- 以至少雲端應用程式 管理員 istrator 身分登入 Microsoft Entra 系統管理中心。
- 如果您有多個租使用者的存取權,請使用頂端功能表中的 [設定] 圖示,切換至您想要從 [目錄 + 訂用帳戶] 功能表註冊應用程式的租使用者。
- 流覽至 [身分>識別應用程式> 應用程式註冊],然後選取 [新增註冊]。
- 輸入應用程式的 [名稱],例如java-webapp。 您的應用程式使用者可能會看到此名稱。 稍後可加以變更。
- 選取註冊。
- 在 [概 觀] 頁面上,記下 應用程式 (用戶端) 識別碼 和 目錄 (租使用者) 識別碼。 您稍後會需要這些值。
- 在 [管理] 底下,選取 [驗證]。
- 選取 [新增平臺>Web]。
- 在 [ 重新導向 URI] 區段中,輸入
https://localhost:8443/msal4jsample/secure/aad
。 - 選取設定。
- 在 [Web] 區段的 [重新導向 URI] 下,輸入
https://localhost:8443/msal4jsample/graph/me
作為第二個重新導向 URI。 - 在 [管理] 下,選取 [憑證與秘密]。 在用戶端密碼區段底下,選取新增用戶端密碼。
- 輸入金鑰描述(例如應用程式 密碼)、保留預設到期日,然後選取 [ 新增]。
- 請注意客戶端密碼的值。 稍後您將需要此資訊。
步驟 2:下載程式代碼範例
步驟 3:設定程式碼範例
將 zip 檔案解壓縮到本機資料夾。
選擇性。 如果您使用整合開發環境,請在該環境中開啟範例。
開啟 application.properties 檔案。 您可以在 src/main/resources/ 資料夾中找到它。 將、
aad.authority
和aad.secretKey
欄位中aad.clientId
的值分別取代為應用程式識別碼、租使用者識別碼和客戶端密碼值。 其外觀如下:aad.clientId=Enter_the_Application_Id_here aad.authority=https://login.microsoftonline.com/Enter_the_Tenant_Info_Here/ aad.secretKey=Enter_the_Client_Secret_Here aad.redirectUriSignin=https://localhost:8443/msal4jsample/secure/aad aad.redirectUriGraph=https://localhost:8443/msal4jsample/graph/me aad.msGraphEndpointHost="https://graph.microsoft.com/"
在先前的程式碼中:
Enter_the_Application_Id_here
是您註冊之應用程式的應用程式識別碼。Enter_the_Client_Secret_Here
是您在憑證和您註冊之應用程式的秘密中建立的客戶端密碼。Enter_the_Tenant_Info_Here
是您註冊之應用程式的目錄(租用戶)標識碼。
- 若要搭配localhost使用 HTTPS,請提供
server.ssl.key
屬性。 若要產生自我簽署憑證,請使用keytool公用程式(包含在 JRE 中)。
以下是範例:
keytool -genkeypair -alias testCert -keyalg RSA -storetype PKCS12 -keystore keystore.p12 -storepass password
server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=password
server.ssl.key-alias=testCert
- 將產生的金鑰存放區檔案放在 resources 資料夾中。
步驟 4:執行程式碼範例
若要執行專案,請執行下列其中一個步驟:
- 使用內嵌的 Spring Boot 伺服器直接從 IDE 執行它。
- 使用 Maven 將它封裝到 WAR 檔案,然後將它部署到 J2EE 容器解決方案,例如 Apache Tomcat。
從 IDE 執行專案
若要從 IDE 執行 Web 應用程式,請選取 [執行],然後移至專案的首頁。 在此範例中,標準首頁 URL 為 https://localhost:8443.
在首頁上,選取 [登入 ] 按鈕,將使用者重新導向至 Microsoft Entra ID,並提示他們輸入認證。
驗證使用者之後,系統會將使用者重新導向至
https://localhost:8443/msal4jsample/secure/aad
。 他們現在已登入,頁面會顯示用戶帳戶的相關信息。 範例 UI 有下列按鈕:- 註銷:將目前用戶註銷應用程式,並將該使用者重新導向至首頁。
- 顯示使用者資訊:取得 Microsoft Graph 的令牌,並使用包含令牌的要求呼叫 Microsoft Graph,以傳回已登入使用者的基本資訊。
從 Tomcat 執行專案
如果您想要將 Web 範例部署到 Tomcat,請對原始程式碼進行幾項變更。
開啟 ms-identity-java-webapp/src/main/java/com.microsoft.azure.msalwebsample/MsalWebSampleApplication。
刪除所有原始程式碼,並將它取代為下列程式代碼:
package com.microsoft.azure.msalwebsample; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class MsalWebSampleApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MsalWebSampleApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MsalWebSampleApplication.class); } }
Tomcat 的預設 HTTP 埠為 8080,但您需要透過埠 8443 的 HTTPS 連線。 若要設定此設定:
移至 tomcat/conf/server.xml。
<connector>
搜尋 標籤,並將現有的連接器取代為此連接器:<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="C:/Path/To/Keystore/File/keystore.p12" keystorePass="KeystorePassword" clientAuth="false" sslProtocol="TLS"/>
開啟命令提示字元視窗。 移至此範例的根資料夾(檔案所在的位置
pom.xml
),然後執行mvn package
以建置專案。- 此命令會在您的
/targets
目錄中產生msal-web-sample-0.1.0.war
檔案。 - 將此檔案重新命名為
msal4jsample.war
。 - 使用 Tomcat 或任何其他 J2EE 容器解決方案部署 WAR 檔案。
- 若要部署
msal4jsample.war
檔案,請將它/webapps/
複製到 Tomcat 安裝中的目錄,然後啟動 Tomcat 伺服器。
- 若要部署
- 此命令會在您的
部署檔案之後,請使用瀏覽器移至
https://localhost:8443/msal4jsample
。
重要
本快速入門應用程式會使用客戶端密碼,將自己識別為機密用戶端。 因為客戶端密碼會新增為項目檔的純文本,因此基於安全性考慮,建議您在生產環境中使用應用程式之前,先使用憑證,而不是客戶端密碼。 如需如何使用憑證的詳細資訊,請參閱 應用程式驗證的憑證認證。
其他相關資訊
範例的運作方式
取得 MSAL
適用於 Java 的 MSAL (MSAL4J) 是用來登入使用者和要求令牌的 Java 連結庫,用來存取受 Microsoft 身分識別平台 保護的 API。
使用 Maven 或 Gradle 將 MSAL4J 新增至您的應用程式,藉由對應用程式的 pom.xml (Maven) 或 build.gradle 檔案進行下列變更來管理相依性。
在 pom.xml:
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>msal4j</artifactId>
<version>1.0.0</version>
</dependency>
在 build.gradle 中:
compile group: 'com.microsoft.azure', name: 'msal4j', version: '1.0.0'
初始化 MSAL
在您將使用 MSAL4J 的檔案開頭新增下列程式代碼,以新增適用於 Java 的 MSAL 參考:
import com.microsoft.aad.msal4j.*;
說明與支援
如果您需要協助、想要回報問題,或想要了解支援選項,請參閱 開發人員的說明和支援。
下一步
如需在 Microsoft 身分識別平台 上建置登入使用者之 Web 應用程式的更深入討論,請參閱多部分案例系列: