Adquisición de tokens de forma interactiva

Explorador del sistema

MSAL admite la adquisición de tokens de forma interactiva en clientes públicos mediante el uso del explorador del sistema. De forma predeterminada, MSAL iniciará el explorador del sistema como un proceso independiente, dirigirá al usuario a la dirección URL de autorización e interceptará la respuesta de autorización. Puede personalizar este comportamiento, como cómo se abre la ventana del explorador y lo que ve el usuario después de la autorización, configurando el SystemBrowserOptions parámetro de una solicitud interactiva.

MSAL escuchará http://localhost:port e interceptará el código que la autoridad envía cuando el usuario haya terminado de autenticarse. MSAL no puede detectar si el usuario navega fuera o simplemente cierra el explorador. Se recomienda que las aplicaciones que usan esta técnica definan un tiempo de espera. Se recomienda un tiempo de espera de al menos unos minutos para tener en cuenta los casos en los que se le pida al usuario que cambie la contraseña o realice 2FA.

Uso del explorador del sistema operativo predeterminado

Durante el registro de aplicaciones, configure http://localhost como un URI de redirección. En el caso de B2C, deberá registrar un puerto http://locahost:portespecífico.

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

Personalización de la experiencia

MSAL intenta abrir el explorador del sistema predeterminado, si hay uno disponible, en el equipo de los usuarios. Puede personalizar esta lógica proporcionando su propia implementación de OpenBrowserAction

  • Implemente OpenBrowserAction
  • Pasa la acción personalizada a SystemBrowserOptions
class CustomOpenBrowserAction implements OpenBrowserAction {
    @Override
    public void openBrowser(URL url){
            //Custom logic to open URL 
    }
}

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

También puede personalizar el mensaje HTML al que el usuario ve después de autenticarse o incluso proporcionar una dirección URL a la que desea que se redirija al usuario después de la autenticación.

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