Testing

A loadExternalTokens() API

Az MSAL Browser 2.17.0-s verziójától kezdve bevezette az loadExternalTokens() API-t, amely lehetővé teszi az azonosító-, hozzáférési és frissítési tokenek betöltését az MSAL-gyorsítótárba, amelyek ezután a acquireTokenSilent() használatával kérhetők le.

Megjegyzés: Ez egy speciális funkció, amely csak a böngészőkörnyezetben való tesztelésre szolgál. A tokenek az alkalmazása gyorsítótárába való betöltése az alkalmazás hibás működését okozhatja. Emellett azt is javasoljuk loadExternalTokens() , hogy az API-t egység- és integrációs tesztekhez használja. Az E2E-teszteléshez tekintse meg inkább a TestingSample-et .

Az loadExternalTokens() API egy nyilvános API, amely lehetővé teszi, hogy az alkalmazások egyénileg betöltsék a tokeneket az MSAL-gyorsítótárba.

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

loadExternalTokens() típuskérést SilentRequest, típusválaszt ExternalTokenResponseés típusbeállításokat LoadTokenOptionsvesz fel.

Tekintse meg az egyes típusdefiníciókat, amelyek a következőből @azure/msal-browserimportálhatók:

Tokenek betöltése

Az azonosítók, a hozzáférési és a frissítési jogkivonatok bármilyen kombinációját megadhatja a gyorsítótárazáshoz, de legalább az loadExternalTokens API-nak a következő bemeneti paraméterek egyikét kell megadnia a jogkivonat-társítások azonosításához és a gyorsítótár megfelelő gyorsítótárazásához:

  • Egy SilentRequestobjektum fiókadatokkal, VAGY
  • Egy SilentRequest objektum a jogosultsággal ÉS egy LoadTokenOptions objektum clientInfo-val, VAGY
  • Egy SilentRequest objektum authoritással ÉS egy kiszolgáló-válaszobjektum ezzel: client_info
  • Egy SilentRequest objektum hitelesítéssel ÉS egy kiszolgáló-válaszobjektum id_token elemmel

Az alábbi példák a tokenek egyenkénti betöltését mutatják be, azonban egyetlen kérésben megadhat 1, 2 vagy mind a 3 tokent.

Azonosító tokenek betöltése

Az azonosító jogkivonat betöltéséhez a fent felsorolt paraméterek mellett az alábbiakat is meg kell adnia:

  1. Kiszolgáló válasza a id_token mezővel

A fiók a gyorsítótárban is be lesz állítva a fent megadott információk alapján.

Lásd az alábbi kód példákat:

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

Hozzáférési jogkivonatok betöltése

A fent felsorolt paraméterek mellett a következő lehetőségeket is biztosítjuk egy hozzáférési jogkivonat betöltéséhez:

  1. Kiszolgálóválasz ezzel: access_token, expires_in, token_type és scope

Lásd az alábbi kód példákat:

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

Frissítési tokenek betöltése

A fent felsorolt paraméterek mellett adja meg a következőket egy frissítési jogkivonat betöltéséhez:

  1. A kiszolgáló válasza egy refresh_token elemmel, illetve opcionálisan refresh_token_expires_in elemmel

Lásd az alábbi kód példákat:

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