Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
API:t loadExternalTokens()
MSAL Browser har från och med version 2.17.0 lagt till API:et loadExternalTokens(), vilket gör det möjligt att ladda in id-, åtkomst- och uppdateringstoken i MSAL-cachen, som sedan kan hämtas med acquireTokenSilent().
Obs! Det här är en avancerad funktion som endast är avsedd för testning i webbläsarmiljön. Att läsa in token i appens cache kan göra att appen slutar fungera. Dessutom rekommenderar loadExternalTokens() vi att API:et används med enhets- och integreringstester. För E2E-testning läser du vår TestingSample i stället.
Det offentliga API:et loadExternalTokens() gör det möjligt för appar att läsa in anpassade token i MSAL-cachen.
await loadExternalTokens(
config,
silentRequest,
serverResponse,
loadTokenOptions,
);
loadExternalTokens() tar in en begäran av typen SilentRequest, ett svar av typen ExternalTokenResponseoch alternativ av typen LoadTokenOptions.
Se typdefinitionerna för var och en, som kan importeras från @azure/msal-browser:
Läser in token
Du kan ange valfri kombination av ID, åtkomst och uppdateringstoken för cachelagring, men api:et loadExternalTokens kräver minst en av följande uppsättningar med indataparametrar för att identifiera tokenassociationer och cachelagra på rätt sätt:
- Ett
SilentRequestobjekt med kontoinformation, OR - Ett
SilentRequest-objekt med auktoriteten OCH ettLoadTokenOptions-objekt medclientInfo, ELLER - Ett
SilentRequestobjekt med auktoriteten OCH ett serversvarsobjekt medclient_info - Ett
SilentRequest-objekt med auktoriteten OCH ett serversvarobjekt medid_token
Exemplen nedan visar inläsningstoken individuellt, men du kan ange 1, 2 eller alla 3 i en enda begäran.
Läser in ID-token
Förutom de parametrar som anges ovan anger du följande för att läsa in en ID-token:
- Ett serversvar med fältet
id_token
Ett konto skapas också i cachen baserat på informationen som anges ovan.
Se kodexemplen nedan:
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
);
Läser in åtkomsttoken
Förutom de parametrar som anges ovan anger du följande för att läsa in en åtkomsttoken:
- Ett serversvar med
access_token,expires_in,token_typeochscope
Se kodexemplen nedan:
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
);
Läser in uppdateringstoken
Förutom de parametrar som anges ovan anger du följande för att läsa in en uppdateringstoken:
- Ett serversvar med ett
refresh_tokenoch valfrittrefresh_token_expires_in
Se kodexemplen nedan:
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
);