使用 Microsoft 驗證程式庫登入使用者
您已向 Microsoft Entra ID 註冊 Web 應用程式。 現在,您已準備好新增驗證碼以在您的應用程式中登入使用者,並想要使用可為您處理驗證詳細資料的 SDK。 在此單元中,您會了解適用於 Java 的 Microsoft 驗證程式庫 (MSAL4J),及其如何協助進行驗證。
適用於 JAVA 的 Microsoft 驗證程式庫
適用於 Java 的 Microsoft 驗證程式庫 (MSAL4J) 可讓應用程式使用 Microsoft 身分識別 (Microsoft Entra ID、Microsoft 帳戶和 Azure Active Directory B2C 帳戶) 登入使用者或應用程式,以及取得權杖來呼叫 Microsoft API 或您自己使用 Microsoft Entra ID 註冊的 API。 此程式庫是使用業界標準 OAuth2 和 OpenID Connect 通訊協定所建置的。
此程式庫提供便利的 API,可讓不同類型的應用程式使用 Microsoft Entra ID 進行驗證:
- Web 應用程式
- 精靈服務
- 命令列應用程式
- 傳統型應用程式
將 MSAL 物件初始化
若要開始使用 MSAL,您必須在應用程式程式碼中初始化和設定 MSAL 物件。
MSAL 會將用戶端應用程式顯示為公用用戶端和機密用戶端,兩者的區別在於能否安全地向授權伺服器進行驗證,並維護其用戶端認證的機密性。
機密用戶端應用程式是在伺服器上執行的應用程式 (Web 應用程式、Web API 應用程式,甚或服務/精靈應用程式)。 機密用戶端可以保存設定時間的應用程式秘密。
您可以用下列方式建立機密用戶端的執行個體:
IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);
ConfidentialClientApplication app = ConfidentialClientApplication
.builder(CLIENT_ID, credential)
.authority(AUTHORITY)
.build();
- CLIENT_ID:用戶端識別碼是在註冊應用程式時,Microsoft Entra ID 指派給應用程式的唯一應用程式 (用戶端) 識別碼。
- CLIENT_SECRET:機密用戶端應用程式的用戶端密碼,建立於註冊應用程式時。
- AUTHORITY:授權單位是一個 URL,指出 MSAL 可從中要求權杖的目錄。 這是由應用程式的識別提供者執行個體和登入對象所組成。
透過 MSAL 取得驗證權杖
MSAL 提供的 acquireToken 方法可起始驗證流程,並傳回包含驗證權杖的 AuthenticationResult。
當使用者完成登入時,就會在驗證結果中傳回識別碼權杖,其中包含一些基本驗證宣告,例如使用者主體名稱、電子郵件等等。
以下是透過 MSAL 取得權杖的範例:
final AuthorizationCodeParameters authParams = AuthorizationCodeParameters
.builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES))
.build();
final IAuthenticationResult result = app.acquireToken(authParams).get();
- REDIRECT_URI:重新導向 URI 是識別提供者將傳回安全性權杖的目標 URI。 這必須符合 Microsoft Entra 應用程式註冊中的重新導向 URI。
-
SCOPES:範圍是應用程式所要求的權限。 一般來說,
openid profile offline_access這三個範圍即足以接收使用者登入的識別碼權杖回應,而 MSAL 依預設會設定這些範圍。
在起始使用者登入流程,並呼叫 API 以存取資料時,請在您的應用程式中使用 acquireToken 方法。