Testing

A API loadExternalTokens()

O MSAL Browser, a partir da versão 2.17.0, adicionou a API loadExternalTokens(), que permite carregar tokens de identidade, acesso e atualização no cache do MSAL, que podem ser recuperados usando acquireTokenSilent().

Observação: esse é um recurso avançado destinado apenas a fins de teste no ambiente do navegador. Carregar tokens no cache do aplicativo pode fazer com que o aplicativo seja interrompido. Além disso, recomendamos loadExternalTokens() que a API seja usada com testes de unidade e integração. Para testes E2E, consulte nosso TestingSample em vez disso.

A loadExternalTokens() API é uma API pública que facilita aplicativos para carregar tokens personalizados para o cache MSAL.

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

loadExternalTokens() recebe uma solicitação de tipo SilentRequest, uma resposta de tipo ExternalTokenResponsee opções de tipo LoadTokenOptions.

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

Carregando tokens

Você pode fornecer qualquer combinação de token de ID, token de acesso e token 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 entre tokens e realizar o armazenamento em cache adequadamente:

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

Os exemplos abaixo mostram o carregamento de tokens individualmente, no entanto, você pode fornecer qualquer 1, 2 ou todos os 3 em uma única solicitação.

Carregando tokens de ID

Além dos parâmetros listados acima , forneça o seguinte para carregar um token de id:

  1. Uma resposta do servidor com o id_token campo

Uma conta também será definida no 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
);

Carregando tokens de acesso

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

  1. Uma resposta do servidor com uma 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
);

Carregando tokens de atualização

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

  1. Uma resposta de 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
);