ADAL AcquireTokenByRefreshTokenAsync不更新TokenCache

时间:2018-07-02 17:21:28

标签: c# adal

我们正在使用ADAL V2.29.0尝试完成滚动的AccessToken。 IE,AccessToken会在4天后过期,而RefreshToken会在7天后过期。每次登录时,您的RefreshToken都会获得一个新的AccessToken(因此从您上次登录起4天到期)

我们正在使用AcquireTokenByRefreshTokenAsycn(),并且正在获取新的更新的AccessToken。但是,TokenCache不会被更新,并且不会将新令牌写入到我们的tokenPath中。

如何将TokenCache字典项设置为AquireTokenByRefreshTokenAsync的结果?

AuthenticationContext ac = new AuthenticationContext( strAuthority, false, tokenFileCache );

//Authenticate using a refresh token and get new Access Token   
var refreshTokenString = File.ReadAllText( Path.Combine( appDataPath, refreshToken ) );
ar = await ac.AcquireTokenByRefreshTokenAsync( refreshTokenString, strClientIdentifier );

1 个答案:

答案 0 :(得分:0)

答案是ADAL中的AquireTokenByRefreshToken调用被设计为不访问TokenCache。后台的TokenCache是​​ConcurrentDictionary,它是TokenCache的私有成员,无法从ADAL框架外部访问。祝所有尝试这样做的人好运。我认为这会比我发现的搜索更为普遍