取得權杖

如 MSAL for Java 情境中所述,取得憑證的方法有很多種。 有些則需要透過網頁瀏覽器進行使用者互動。 有些根本不需要使用者互動。

一般來說,取得憑證的方式會依應用程式類型而異——是公開客戶端應用程式(桌面/行動裝置)或機密客戶端應用程式(網頁應用程式、Web API、守護程序應用程式如 Windows 服務)。

Pre-requisites

在透過 MSAL4J 取得權杖之前,請務必先實例化 用戶端應用程式

代幣取得方法

請參考以下主題,了解每種代幣獲取方法中 MSAL4J 代碼的詳細說明。

公共客戶端應用程式

  • 透過系統瀏覽器互動式取得代幣
  • 在允許使用者透過授權請求 URL 登入後,透過授權 碼 取得權杖。
  • 也可以取得包含 使用者名稱和密碼的令牌。(此流程已被淘汰)
  • 對於在 Windows 機器上運行並加入網域或 Microsoft Entra ID 的應用程式,可以透過整合 Windows 認證(IWA)悄悄取得令牌。
  • 最後,對於在沒有網頁瀏覽器的裝置上運行的應用程式,可以透過 裝置程式碼流程取得令牌,該流程會提供使用者一個網址和一個代碼。 使用者會前往另一台裝置的網頁瀏覽器,輸入程式碼並登入,然後 Microsoft Entra ID 會回傳一個令牌給無瀏覽器的裝置。

機密客戶應用程式

  • 使用 用戶端憑證,以 應用程式本身 的身分取得權杖,而非為使用者取得。 例如,在批次處理使用者而非特定使用者的應用程式中,例如同步工具。
  • 如果是 Web App 或 Web API 以使用者的名義呼叫另一個下游 Web API,請使用 On Behalf Of 流程,根據某種使用者聲明(例如 SAML 或 JWT 權杖)來取得權杖。
  • 對於以使用者名義開發的網頁應用程式,在讓使用者透過授權請求 URL 登入後,透過授權 碼 取得權杖。 這通常是應用程式使用的機制,讓使用者使用 OpenID Connect 登入,但接著想存取該特定使用者的 Web API。

MSAL4J 快取標記

對於公開客戶端與機密客戶端應用程式,MSAL 都會維護一個令牌快取,應用程式應先從快取取得令牌,然後再進行其他方式(用戶端 憑證除外,該憑證會單獨查看快取)。 請參考推薦的代幣獲取 模式 。

為了能使用快取,應用程式需要自訂 令牌快取序列化。