Testes

A API loadExternalTokens()

O MSAL Browser, a partir da versão 2.17.0, passou a incluir a API loadExternalTokens(), que permite carregar tokens de ID, de acesso e de atualização para a cache do MSAL, que podem depois ser obtidos através de acquireTokenSilent().

Nota: Esta é uma funcionalidade avançada destinada apenas a fins de teste no ambiente do navegador. Carregar tokens na cache da sua aplicação pode fazer com que a sua aplicação quebre. Além disso, recomendamos a utilização da loadExternalTokens() API com testes unitários e de integração. Para testes E2E, consulte antes o nosso TestingSample.

A loadExternalTokens() API é uma API pública que facilita que aplicações carreguem tokens personalizados na cache MSAL.

await loadExternalTokens(
    config,
    silentRequest,
    serverResponse,
    loadTokenOptions,
);

loadExternalTokens() aceita um pedido do tipo SilentRequest, uma resposta do tipo ExternalTokenResponse, e opções do tipo LoadTokenOptions.

Veja as definições de tipo para cada um, que podem ser importadas de @azure/msal-browser:

Carregamento de tokens

Pode fornecer qualquer combinação de tokens de ID, de acesso e de atualização para armazenamento em cache, mas, no mínimo, a API loadExternalTokens requer um dos seguintes conjuntos de parâmetros de entrada para identificar associações de tokens e armazenar em cache adequadamente:

  • Um SilentRequest objeto com informação de conta, OU
  • Um objeto SilentRequest que tenha autoridade E um objeto LoadTokenOptions com clientInfo, OU
  • Um objeto SilentRequest com autoridade E um objeto de resposta do servidor com client_info
  • Um objeto SilentRequest com a autoridade E um objeto de resposta do servidor com id_token

Os exemplos abaixo mostram o carregamento dos tokens individualmente, no entanto, pode fornecer qualquer 1, 2 ou todos os 3 num único pedido.

Carregamento de tokens de identificação

Além dos parâmetros listados acima , fornece o seguinte para carregar um token id:

  1. Uma resposta do servidor com o id_token campo

Uma conta também será criada na cache com base nas informações fornecidas acima.

Veja os exemplos de código abaixo:

const config: Configuration = {
    auth: { clientId: "your-client-id" },
};

const silentRequest: SilentRequest = {
    account: {
        homeAccountId: "your-home-account-id",
        environment: "login.microsoftonline.com",
        tenantId: "your-tenant-id",
        username: "test@contoso.com",
        localAccountId: "your-local-account-id",
    },
};

const serverResponse: ExternalTokenResponse = {
    id_token: "id-token-here",
};

const loadTokenOptions: LoadTokenOptions = {};

const pca = new PublicClientApplication(config);
await loadExternalTokens(
    config,
    silentRequest,
    serverResponse,
    loadTokenOptions
);

// OR

const config: Configuration = {
    auth: { clientId: "your-client-id" },
};

const silentRequest: SilentRequest = {
    scopes: [],
    authority: "https://login.microsoftonline.com/your-tenant-id",
};

const serverResponse: ExternalTokenResponse = {
    id_token: "id-token-here",
};

const loadTokenOptions: LoadTokenOptions = {
    clientInfo: "client-info-here",
};

const pca = new PublicClientApplication(config);
await loadExternalTokens(
    config,
    silentRequest,
    serverResponse,
    loadTokenOptions
);

// OR

const config: Configuration = {
    auth: { clientId: "your-client-id" },
};

const silentRequest: SilentRequest = {
    scopes: [],
    authority: "https://login.microsoftonline.com/your-tenant-id",
};

const serverResponse: ExternalTokenResponse = {
    id_token: "id-token-here",
    client_info: "client-info-here",
};

const loadTokenOptions: LoadTokenOptions = {};

const pca = new PublicClientApplication(config);
await loadExternalTokens(
    config,
    silentRequest,
    serverResponse,
    loadTokenOptions
);

Carregamento de tokens de acesso

Além dos parâmetros listados acima , fornece o seguinte para carregar um token de acesso:

  1. Uma resposta do servidor com um access_token, expires_in, token_type, e scope

Veja os exemplos de código abaixo:

const config: Configuration = {
    auth: { clientId: "your-client-id" },
};

const silentRequest: SilentRequest = {
    scopes: ["User.Read", "email"],
    account: {
        homeAccountId: "your-home-account-id",
        environment: "login.microsoftonline.com",
        tenantId: "your-tenant-id",
        username: "test@contoso.com",
        localAccountId: "your-local-account-id",
    },
};

const serverResponse: ExternalTokenResponse = {
    token_type: AuthenticationScheme.BEARER, // "Bearer"
    scope: "User.Read email",
    expires_in: 3599,
    access_token: "access-token-here",
};

const loadTokenOptions: LoadTokenOptions = {
    extendedExpiresOn: 6599,
};

const pca = new PublicClientApplication(config);
await loadExternalTokens(
    config,
    silentRequest,
    serverResponse,
    loadTokenOptions
);

Carregamento de tokens de atualização

Além dos parâmetros listados acima , fornece o seguinte para carregar um token de atualização:

  1. Uma resposta do servidor com um refresh_token e, opcionalmente, refresh_token_expires_in

Veja os exemplos de código abaixo:

const config: Configuration = {
    auth: { clientId: "your-client-id" },
};

const silentRequest: SilentRequest = {
    scopes: [],
    account: {
        homeAccountId: "your-home-account-id",
        environment: "login.microsoftonline.com",
        tenantId: "your-tenant-id",
        username: "test@contoso.com",
        localAccountId: "your-local-account-id",
    },
};

const serverResponse: ExternalTokenResponse = {
    refresh_token: "refresh-token-here",
    refresh_token_expires_in: "86399",
};

const loadTokenOptions: LoadTokenOptions = {};

const pca = new PublicClientApplication(config);

await loadExternalTokens(
    config,
    silentRequest,
    serverResponse,
    loadTokenOptions
);