Testing

API loadExternalTokens()

MSAL Browser od wersji 2.17.0 udostępnia interfejs API loadExternalTokens(), który umożliwia ładowanie tokenów identyfikacyjnych, dostępu i odświeżania do pamięci podręcznej MSAL, skąd można je następnie pobrać za pomocą acquireTokenSilent().

Uwaga: jest to zaawansowana funkcja przeznaczona tylko do celów testowych w środowisku przeglądarki. Ładowanie tokenów do pamięci podręcznej aplikacji może spowodować przerwanie działania aplikacji. Ponadto zalecamy używanie interfejsu loadExternalTokens() API z testami jednostkowymi i integracyjnymi. W przypadku testów E2E zapoznaj się zamiast tego z naszym TestingSample.

Interfejs API loadExternalTokens() jest publicznym interfejsem API, który umożliwia aplikacjom niestandardowe ładowanie tokenów do pamięci podręcznej biblioteki MSAL.

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

loadExternalTokens() przyjmuje żądanie typu SilentRequest, odpowiedź typu ExternalTokenResponsei opcje typu LoadTokenOptions.

Zapoznaj się z definicjami typów dla każdego z nich, które można zaimportować z @azure/msal-browser:

Ładowanie tokenów

Do buforowania można podać dowolną kombinację tokenów ID, dostępu i odświeżania, ale interfejs API loadExternalTokens wymaga co najmniej jednego z poniższych zestawów parametrów wejściowych, aby zidentyfikować powiązania tokenów i odpowiednio użyć pamięci podręcznej:

  • SilentRequest Obiekt z informacjami o koncie LUB
  • SilentRequest obiekt z uprawnieniem oraz LoadTokenOptions obiekt z clientInfo, lub
  • Obiekt SilentRequest z uprawnieniem ORAZ obiekt odpowiedzi serwera z client_info
  • Obiekt SilentRequest z uprawnieniami oraz obiekt odpowiedzi serwera z id_token

W poniższych przykładach pokazano pojedyncze tokeny ładowania, jednak w jednym żądaniu możesz podać dowolne 1, 2 lub wszystkie 3.

Ładowanie tokenów identyfikacyjnych

Oprócz parametrów wymienionych powyżej podaj następujące informacje, aby załadować token identyfikatora:

  1. Odpowiedź serwera z polem id_token

Konto zostanie również ustawione w pamięci podręcznej na podstawie podanych powyżej informacji.

Zapoznaj się z poniższymi przykładami kodu:

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

Ładowanie tokenów dostępu

Oprócz parametrów wymienionych powyżej podaj następujące informacje, aby załadować token dostępu:

  1. Odpowiedź serwera z elementem access_token, expires_in, token_typei scope

Zapoznaj się z poniższymi przykładami kodu:

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

Ładowanie tokenów odświeżania

Oprócz parametrów wymienionych powyżej podaj następujące informacje, aby załadować token odświeżania:

  1. Odpowiedź serwera z elementem refresh_token i opcjonalnie refresh_token_expires_in

Zapoznaj się z poniższymi przykładami kodu:

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