Используя ADAL, у меня есть два AuthenticationContext
с использованием Token Cache, сохраненного в SQL.
Используя AcquireTokenByAuthorizationCode
, он записывает токен в базу данных, но при использовании AcquireTokenSilent
я всегда получаю
Не удалось получить токен автоматически. Метод вызова AcquireToken
Вот подробности для репликации проблемы:
Я создаю контекст
AuthenticationContext authContext = new AuthenticationContext(_authority, new AzureAdalCache(companyId, _entries, _unitOfWork));
Затем я получаю токен авторизацией
authContext.AcquireTokenByAuthorizationCode(authorizationCode, new Uri(redirectUri), _clientCredential);
На этом этапе он сохраняет запись в базе данных
Затем, если я позвоню, я получу исключение.
authContext.AcquireTokenSilent(_authority, _clientCredential, new UserIdentifier(companyId.ToString(), UserIdentifierType.UniqueId)).AccessToken;
Я также пробовал с тем же результатом:
authContext.AcquireTokenSilent(_authority, _clientId).AccessToken;
authContext.AcquireTokenSilent(_authority, _clientCredential, UserIdentifier.AnyUser).AccessToken;
Я публикую свою реализацию AzureAdalCache
в этой сути.
Каждая запись кэша подобна этой.
Что мне не хватает?
Обновить
На основе ответа на комментарии @vibronet у меня есть это
AuthenticationContext authContext = new AuthenticationContext(_authority, new AzureAdalCache(companyId, _entries, _unitOfWork));
authContext.AcquireTokenByAuthorizationCode(authorizationCode, new Uri(redirectUri), _clientCredential, _eWSResource);
string result = authContext.AcquireTokenSilent(_eWSResource, _clientId, UserIdentifier.AnyUser).AccessToken;