Testing

API loadExternalTokens()

MSAL Browser od verze 2.17.0 obsahuje rozhraní API loadExternalTokens(), které umožňuje načíst tokeny ID, přístupové a obnovovací tokeny do mezipaměti MSAL, odkud je pak lze načíst pomocí acquireTokenSilent().

Poznámka: Jedná se o pokročilou funkci, která je určená pouze pro účely testování v prostředí prohlížeče. Načítání tokenů do mezipaměti vaší aplikace může způsobit přerušení aplikace. Kromě toho doporučujeme loadExternalTokens() rozhraní API používat s testy jednotek a integrace. Pro E2E testování si místo toho prosím přečtěte náš TestingSample.

Rozhraní loadExternalTokens() API je veřejné rozhraní API usnadňující aplikacím vlastní načítání tokenů do mezipaměti MSAL.

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

loadExternalTokens() přijímá požadavek typu SilentRequest, odpověď typu ExternalTokenResponse a možnosti typu LoadTokenOptions.

Podívejte se na definice typů pro každý z nich, které lze importovat z @azure/msal-browser:

Načítání tokenů

Můžete zadat libovolnou kombinaci ID, přístupových a obnovovacích tokenů pro ukládání do mezipaměti, ale minimálně loadExternalTokens rozhraní API vyžaduje jednu z následujících sad vstupních parametrů k identifikaci přidružení tokenů a mezipaměti odpovídajícím způsobem:

  • Objekt SilentRequest s informacemi o účtu NEBO
  • Objekt SilentRequest s autoritou A objekt LoadTokenOptions s clientInfo, OR
  • Objekt SilentRequest s autoritou A objektem odpovědi serveru s client_info
  • Objekt SilentRequest s autoritou A objektem odpovědi serveru s id_token

Následující příklady ukazují načítání tokenů jednotlivě, ale v jednom požadavku můžete zadat libovolných 1, 2 nebo všech 3.

Načítání tokenů ID

Kromě výše uvedených parametrů poskytují následující informace pro načtení tokenu ID:

  1. Odpověď serveru s polem id_token

Účet se také nastaví v mezipaměti na základě výše uvedených informací.

Podívejte se na následující příklady kódu:

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
);

Načítání přístupových tokenů

Kromě výše uvedených parametrů poskytují následující informace pro načtení přístupového tokenu:

  1. Odpověď serveru obsahující access_token, expires_in, token_type a scope

Podívejte se na následující příklady kódu:

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
);

Načítání obnovovacích tokenů

Kromě výše uvedených parametrů poskytují následující informace pro načtení obnovovacího tokenu:

  1. Odpověď serveru s refresh_token a volitelně s refresh_token_expires_in

Podívejte se na následující příklady kódu:

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
);