Testing

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 SilentRequest objekt med kontoinformation, OR
  • Ett SilentRequest-objekt med auktoriteten OCH ett LoadTokenOptions-objekt med clientInfo, ELLER
  • Ett SilentRequest objekt med auktoriteten OCH ett serversvarsobjekt med client_info
  • Ett SilentRequest-objekt med auktoriteten OCH ett serversvarobjekt med id_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:

  1. 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:

  1. Ett serversvar med access_token, expires_in, token_type och scope

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:

  1. Ett serversvar med ett refresh_token och valfritt refresh_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
);