Hämta token interaktivt

Systemwebbläsare

MSAL stöder interaktiv hämtning av token för offentliga klienter med hjälp av systemwebbläsaren. Som standard startar MSAL systemwebbläsaren som en separat process, dirigerar användaren till auktoriserings-URL:en och fångar upp auktoriseringssvaret. Du kan anpassa det här beteendet, till exempel hur webbläsarfönstret öppnas och vad användaren ser efter auktoriseringen, genom att konfigurera parametern för SystemBrowserOptions en interaktiv begäran.

MSAL lyssnar på http://localhost:port och fångar upp koden som utfärdaren skickar när användaren är klar med autentiseringen. MSAL kan inte identifiera om användaren navigerar bort eller bara stänger webbläsaren. Appar som använder den här tekniken uppmuntras att definiera en tidsgräns. Vi rekommenderar en timeout på minst några minuter för att ta hänsyn till fall där användaren uppmanas att ändra lösenord eller utföra 2FA.

Så här använder du standardwebbläsaren för operativsystemet

Under appregistreringen konfigurerar du http://localhost som en omdirigerings-URI. När det gäller B2C måste du registrera en specifik port 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();

Anpassa upplevelsen

MSAL försöker öppna standardsystemwebbläsaren, om en är tillgänglig, på användardatorn. Du kan anpassa den här logiken genom att tillhandahålla en egen implementering av OpenBrowserAction

  • Implementera OpenBrowserAction
  • Skicka anpassad åtgärd till SystemBrowserOptions
class CustomOpenBrowserAction implements OpenBrowserAction {
    @Override
    public void openBrowser(URL url){
            //Custom logic to open URL 
    }
}

SystemBrowserOptions options =  
        SystemBrowserOptions
                .builder()
                .openBrowserAction(new CustomOpenBrowserAction())
                .build();

Du kan också anpassa HTML-meddelandet som användaren ser efter autentiseringen eller till och med ange en URL där du vill att användaren ska omdirigeras till efter autentiseringen.

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();