Adquirir tokens associados ao dispositivo usando o WAM no Windows

MSAL.js dá suporte à aquisição de tokens do WAM (Gerenciador de Contas Web) no Windows. Esses tokens são associados ao dispositivo no qual foram adquiridos e não são armazenados em cache no localStorage ou sessionStorage do navegador.

Ambiente com suporte

Atualmente, esse recurso só tem suporte no seguinte ambiente:

  • Um computador executando uma compilação Windows que dá suporte ao recurso (mais por vir sobre isso)
  • os navegadores Chrome e Edge ou o Teams
  • extensão Contas do Windows (versão 1.0.5 ou superior) está instalada se estiver usando o Chrome ou o Edge
  • O aplicativo deve ser hospedado no https

Além disso, atualmente, esse recurso só tem suporte para contas corporativas e de estudante

Habilite o recurso no MSAL.js

Para habilitar esse recurso no MSAL.js defina o allowPlatformBroker sinalizador como true em seu objeto de configuração da seguinte maneira:

const msalConfig = {
    auth: {
        clientId: "insert-clientId"
    },
    system: {
        allowPlatformBroker: true
    }
};

Além disso, você precisará chamar e aguardar a API nova initialize antes de invocar qualquer outra API da MSAL.js.

const pca = new PublicClientApplication(msalConfig);

// Initialize will establish a connection with the browser extension, if present
await pca.initialize();

// Call handleRedirectPromise, after initialization is complete
await pca.handleRedirectPromise();

// After initialize and handleRedirectPromise have completed, you may call any of the other APIs as you would without this feature
pca.acquireTokenSilent();

Nenhuma outra alteração é necessária para dar suporte a esse novo recurso. Qualquer usuário que acessar seu aplicativo de um ambiente com suporte agora poderá adquirir tokens associados ao dispositivo. Os usuários em ambientes sem suporte continuarão a adquirir tokens por meio dos fluxos tradicionais baseados na Web.

Um exemplo de trabalho pode ser encontrado aqui

Diferenças ao usar o WAM para adquirir tokens

Há algumas coisas que podem se comportar um pouco diferente ao adquirir tokens por meio do WAM.

  • Todas as configurações relacionadas ao cache se aplicam somente ao cache local da MSAL. O broker nativo controla seu próprio cache, que é mais seguro, usado em vez do armazenamento no navegador, e não oferece suporte à configuração do comportamento do cache. Isso significa que você pode receber um token armazenado em cache, independentemente do valor dos parâmetros de solicitação, como: forceRefreshou cacheLookupPolicystoreInCache. Além disso, os tokens recebidos do broker nativo não são armazenados nem no armazenamento local nem no armazenamento da sessão, independentemente do que você tenha configurado no PublicClientApplication.
  • Se o WAM precisar solicitar interação ao usuário, um prompt do sistema será aberto. Esse prompt parece um pouco diferente das janelas pop-up do navegador às quais você pode estar acostumado.
  • Não há suporte para alternar sua conta no prompt do WAM e MSAL.js gerará um erro (Código de Erro: user_switch) se isso acontecer. É responsabilidade do seu aplicativo capturar esse erro e tratá-lo de uma maneira que faça sentido para seus cenários (por exemplo, mostrar uma página de erro, tentar novamente com a nova conta, tentar novamente com a conta original etc.)