Adquirir tokens interativamente

Navegador do Sistema

A MSAL dá suporte à aquisição de tokens interativamente em clientes públicos por meio do uso do navegador do sistema. Por padrão, a MSAL iniciará o navegador do sistema como um processo separado, direcionará o usuário para a URL de autorização e interceptará a resposta de autorização. Você pode personalizar esse comportamento, como como a janela do navegador é aberta e o que o usuário vê após a autorização, configurando o SystemBrowserOptions parâmetro de uma solicitação interativa.

A MSAL escutará http://localhost:port e interceptará o código que a autoridade envia quando o usuário terminar de autenticar. A MSAL não pode detectar se o usuário navega para longe ou simplesmente fecha o navegador. Os aplicativos que usam essa técnica são incentivados a definir um tempo limite. Recomendamos um tempo limite de pelo menos alguns minutos para levar em conta casos em que o usuário é solicitado a alterar a senha ou executar 2FA.

Como usar o navegador do sistema operacional padrão

Durante o registro do aplicativo, configure http://localhost como um URI de redirecionamento. No caso de B2C, você precisará registrar 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();

Personalizando a experiência

A MSAL tenta abrir o navegador do sistema padrão, se houver um disponível, no computador dos usuários. Você pode personalizar essa lógica fornecendo sua própria implementação de OpenBrowserAction

  • Implementa OpenBrowserAction
  • Passar 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();

Você também pode personalizar a mensagem HTML que o usuário vê depois de autenticar ou até mesmo fornecer uma URL para a qual deseja que o usuário 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();