Testing

loadExternalTokens() API'si

MSAL Browser'a 2.17.0 sürümünden itibaren, kimlik, erişim ve yenileme belirteçlerinin MSAL önbelleğine yüklenmesine olanak tanıyan loadExternalTokens() API'si eklenmiştir; bunlar daha sonra acquireTokenSilent() kullanılarak alınabilir.

Not: Bu, yalnızca tarayıcı ortamında test amacıyla tasarlanmış gelişmiş bir özelliktir. Belirteçleri uygulamanızın önbelleğine yüklemek uygulamanızın bozulmasına neden olabilir. Ayrıca, API'nin birim ve tümleştirme testleriyle kullanılmasını öneririz loadExternalTokens() . E2E testi için lütfen bunun yerine TestingSample bölümüne bakın.

loadExternalTokens() API, uygulamaların belirteçleri MSAL önbelleğine özel olarak yüklemesini sağlayan genel bir API'dir.

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

loadExternalTokens(), SilentRequest türünde bir istek, ExternalTokenResponse türünde bir yanıt ve LoadTokenOptions türünde seçenekler alır.

Her biri için, @azure/msal-browser içinden içe aktarılabilen tür tanımlarına bakın:

Belirteçleri yükleme

Önbelleğe alma için kimlik, erişim ve yenileme belirteçlerinin herhangi bir bileşimini sağlayabilirsiniz, ancak en azından loadExternalTokens API, belirteç ilişkilendirmelerini tanımlamak ve uygun şekilde önbelleğe almak için aşağıdaki giriş parametreleri kümelerinden birini gerektirir:

  • SilentRequest Hesap bilgilerine sahip bir nesne, VEYA
  • yetkisine sahip bir SilentRequest nesne VE clientInfo olan bir LoadTokenOptions nesne VEYA
  • yetkiye sahip bir SilentRequest nesnesi ve client_info içeren bir sunucu yanıt nesnesi
  • yetkiye sahip bir SilentRequest nesnesi VE id_token içeren bir sunucu yanıt nesnesi

Aşağıdaki örneklerde belirteçlerin ayrı ayrı yüklenmesi gösterilmektedir, ancak tek bir istekte 1, 2 veya 3'ünü de sağlayabilirsiniz.

Kimlik belirteçleri yükleniyor

Yukarıda listelenen parametrelere ek olarak, kimlik belirtecini yüklemek için aşağıdakileri sağlayın:

  1. id_token alanına sahip bir sunucu yanıtı

Ayrıca, yukarıda verilen bilgilere göre önbellekte bir hesap ayarlanır.

Aşağıdaki kod örneklerine bakın:

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

Erişim belirteçlerini yükleme

Yukarıda listelenen parametrelere ek olarak, erişim belirtecini yüklemek için aşağıdakileri sağlayın:

  1. access_token, expires_in, token_type ve scope içeren bir sunucu yanıtı

Aşağıdaki kod örneklerine bakın:

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

Yenileme belirteçlerini yükleme

Yukarıda listelenen parametrelere ek olarak, yenileme belirtecini yüklemek için aşağıdakileri sağlayın:

  1. refresh_token içeren ve isteğe bağlı olarak refresh_token_expires_in de içeren bir sunucu yanıtı

Aşağıdaki kod örneklerine bakın:

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