Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
The loadExternalTokens() API
В MSAL Browser, начиная с версии 2.17.0, добавлен API loadExternalTokens(), который позволяет загружать в кэш MSAL токены идентификации, доступа и обновления, после чего их можно получить с помощью acquireTokenSilent().
Примечание. Это расширенная функция, предназначенная только для тестирования в среде браузера. Загрузка токенов в кэш вашего приложения может нарушить работу приложения. Кроме того, мы рекомендуем использовать API loadExternalTokens() с модульными и интеграционными тестами. Для E2E-тестирования вместо этого обратитесь к нашему TestingSample.
loadExternalTokens() API — это общедоступный API, который позволяет приложениям загружать пользовательские токены в кэш MSAL.
await loadExternalTokens(
config,
silentRequest,
serverResponse,
loadTokenOptions,
);
loadExternalTokens() принимает запрос типа SilentRequest, ответ типа ExternalTokenResponseи параметры типа LoadTokenOptions.
См. определения типов для каждого из них, которые можно импортировать из @azure/msal-browser:
Загрузка токенов
Вы можете предоставить любую комбинацию ID-токена, токена доступа и токена обновления для кэширования, однако как минимум для API loadExternalTokens требуется один из следующих наборов входных параметров, чтобы определить связи между токенами и выполнить корректное кэширование:
- Объект
SilentRequestсо сведениями о учетной записи или - Объект
SilentRequestс полномочиями И объектLoadTokenOptionsсclientInfo, ИЛИ -
SilentRequestОбъект с полномочиями И объект ответа сервера сclient_info -
SilentRequestобъект с полномочиями И объект ответа сервера сid_token
В приведённых ниже примерах показана загрузка токенов по отдельности, однако в одном запросе можно передать любой из них, любые 2 или все 3.
Загрузка ID-токенов
Помимо параметров, перечисленных выше, укажите следующие параметры, чтобы загрузить токен идентификации:
- Ответ сервера с полем
id_token
Учетная запись также будет задана в кэше на основе приведенных выше сведений.
См. приведенные ниже примеры кода:
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
);
Загрузка токенов доступа
Помимо параметров, перечисленных выше , предоставьте следующие возможности для загрузки маркера доступа:
- Ответ сервера с параметром
access_token,expires_intoken_typeиscope
См. приведенные ниже примеры кода:
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
);
Загрузка токенов обновления
Помимо параметров, перечисленных выше , укажите следующее для загрузки маркера обновления:
- Ответ сервера с
refresh_tokenи необязательно сrefresh_token_expires_in
См. приведенные ниже примеры кода:
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
);