Adquira tokens de forma interativa

Navegador de Sistema

O MSAL suporta a aquisição interativa de tokens em clientes públicos através do uso do navegador do sistema. Por defeito, o MSAL inicia o navegador do sistema como um processo separado, direciona o utilizador para a URL de autorização e interceta a resposta de autorização. Pode personalizar este comportamento, como a forma como a janela do navegador é aberta e o que o utilizador vê após a autorização, configurando o SystemBrowserOptions parâmetro de um pedido interativo.

A MSAL vai ouvir http://localhost:port e intercetar o código que a autoridade envia quando o utilizador terminar a autenticação. O MSAL não consegue detetar se o utilizador navega para fora ou simplesmente fecha o navegador. As aplicações que utilizam esta técnica são incentivadas a definir um timeout. Recomendamos um intervalo de pelo menos alguns minutos para ter em conta os casos em que o utilizador é solicitado a mudar a palavra-passe ou a realizar 2FA.

Como usar o navegador do sistema operativo predefinido

Durante o registo da aplicação, configure http://localhost como um URI de redirecionamento. No caso do B2C, terá de registar uma porta http://locahost:portespecífica.

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

Personalização da experiência

O MSAL tenta abrir o navegador do sistema predefinido, se estiver disponível, na máquina do utilizador. Pode personalizar esta lógica fornecendo a sua própria implementação de OpenBrowserAction

  • Implementar OpenBrowserAction
  • Transmitir a ação personalizada para SystemBrowserOptions
class CustomOpenBrowserAction implements OpenBrowserAction {
    @Override
    public void openBrowser(URL url){
            //Custom logic to open URL 
    }
}

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

Também pode personalizar a mensagem HTML que o utilizador vê após a autenticação ou até fornecer um URL para onde quer que o utilizador seja redirecionado após a autenticação.

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