Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
SilentRequestobjeto com informação de conta, OU - Um objeto
SilentRequestque tenha autoridade E um objetoLoadTokenOptionscomclientInfo, OU - Um objeto
SilentRequestcom autoridade E um objeto de resposta do servidor comclient_info - Um objeto
SilentRequestcom a autoridade E um objeto de resposta do servidor comid_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:
- Uma resposta do servidor com o
id_tokencampo
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:
- Uma resposta do servidor com um
access_token,expires_in,token_type, escope
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:
- Uma resposta do servidor com um
refresh_tokene, 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
);