В ADAL v2 мы делали это:
// Common parameter:
_clientCredential = new ClientAssertionCertificate(clientId, certificate);
// Get the token for the first time:
var userAssertion = new UserAssertion(accessToken, "urn:ietf:params:oauth:grant-type:jwt-bearer", userName);
_authResult = await authContext.AcquireTokenAsync(resource, _clientCredential, userAssertion);
// Refresh the token (when needed):
_authResult = await authContext.AcquireTokenByRefreshTokenAsync(authResult.RefreshToken, _clientCredential);
Обратите внимание, что для обновления токена нам нужны только предыдущий результат аутентификации и общие учетные данные клиента (_authResult
и _clientCredential
). Это очень удобно.
В ADAL v3 отсутствует AcquireTokenByRefreshTokenAsync, а здесь есть объяснение .Но это не говорит, в конкретных терминах, какие изменения необходимы.
Должны ли мы воспроизводить первый AcquireTokenAsync (и, следовательно, хранить resource
, accessToken
и userName
, хранящиеся где-то всостояние программы)?
Или есть какой-нибудь способ получить актуальный токен только с общими элементами (_authResult
и _clientCredential
)?