使用 ADAL 我有两个AuthenticationContext
使用在 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;
我在这个 GistAzureAdalCache
中发布了我的实现。
Cache的每一项都是这样的。
我错过了什么?
更新
根据@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;