系統瀏覽器
MSAL 支援透過系統瀏覽器在公共用戶端互動式取得令牌。 預設情況下,MSAL 會以獨立程序啟動系統瀏覽器,導引使用者至授權網址,並攔截授權回應。 你可以 自訂這種行為,例如瀏覽器視窗的開啟方式以及授權後使用者所看到的內容,透過設定 SystemBrowserOptions 互動式請求的參數來實現。
MSAL 會監聽 http://localhost:port 並攔截該權威發送的程式碼,當使用者完成驗證後。 MSAL 無法偵測使用者是直接離開還是直接關閉瀏覽器。 採用此技術的應用程式被鼓勵定義一個逾時時間。 我們建議至少暫停幾分鐘,以考慮使用者被要求更改密碼或執行雙重驗證的情況。
如何使用預設作業系統瀏覽器
在應用程式註冊期間,將 http://localhost 設定為重新導向 URI。 以 B2C 為例,你需要註冊特定的埠 http://locahost:port口。
PublicClientApplication publicClientApplication =
PublicClientApplication
.builder(CLIENT_ID)
.authority(AUTHORITY)
.build();
InteractiveRequestParameters parameters = InteractiveRequestParameters
.builder(new URI("http://localhost"))
.scopes(scope)
.build();
IAuthenticationResult result = publicClientApplication.acquireToken(parameters).join();
客製化體驗
MSAL 嘗試在使用者的電腦上開啟預設的系統瀏覽器(若有的話)。 你可以透過提供你自己的 OpenBrowserAction 實作來自訂這個邏輯。
- 實作
OpenBrowserAction - 將自訂動作傳遞給
SystemBrowserOptions
class CustomOpenBrowserAction implements OpenBrowserAction {
@Override
public void openBrowser(URL url){
//Custom logic to open URL
}
}
SystemBrowserOptions options =
SystemBrowserOptions
.builder()
.openBrowserAction(new CustomOpenBrowserAction())
.build();
你也可以自訂使用者驗證後看到的 HTML 訊息,甚至提供你希望使用者在驗證後被導向的網址。
SystemBrowserOptions options =
SystemBrowserOptions
.builder()
.htmlMessageSuccess("CUSTOM_HTML_HERE")
.htmlMessageError("CUSTOM_HTML_HERE")
.build();
// OR
SystemBrowserOptions options =
SystemBrowserOptions
.builder()
.browserRedirectSuccess(new URI("http://localhost:port"))
.browserRedirectError(new URI ("http://localhost:port"))
.build();