#c# #msal
#c# #msal
Вопрос:
Я (успешно) использую поток учетных данных клиента с MSAL для аутентификации такого приложения:
private static async Task<AuthenticationResult> getAuthResultNonInteractively()
{
string[] scopes = {"api://xxx/.default"};
IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.CreateWithApplicationOptions(
new ConfidentialClientApplicationOptions
{
TenantId = "xxx",
ClientId = "xxx",
RedirectUri = "http://localhost",
ClientSecret = "xxx"
})
.Build();
// Desired behaviour: acquires token online only if token does not
// exist in cache or is expired
AuthenticationResult authResult = await app.AcquireTokenForClient(scopes)
.ExecuteAsync();
return authResu<
}
Выполняет ли вызов AcquireTokenForClient
первую попытку найти токен в кэше токенов и получает его онлайн, только если токен еще не существует в кэше или срок действия токена истек? Или он всегда получает токен онлайн? Если последнее верно, что мне нужно изменить, чтобы получить желаемое поведение?
Ответ №1:
AppTokenCache
Используемый AcquireTokenForClient
связан с вашим конкретным экземпляром IConfidentialClientApplication
, поэтому, чтобы воспользоваться преимуществами кэширования токенов, ваш IConfidentialClientApplication
должен быть долговечным (т. Е. Одноэлементным).