我有一个非常难以调试的问题,与ADAL续订不同线程上的访问令牌有关。我的情况是我正在尝试使用ADAL库来获取AD应用程序的访问令牌以连接到SQL Azure数据库。我正在autofac注册中获取令牌,这样每次有人请求它时,它都会重新执行(authContext是一个静态的AuthenticationContext属性)
authContext.AcquireTokenAsync("https://database.windows.net/", certCred).Result;
我认为这会导致问题,因为以下步骤会导致访问令牌请求超时 -
1)。启动应用程序,在线程#1中请求访问令牌。成功
2)。将计算机的时间增加一天,在第1个线程中再次请求访问令牌。旧令牌被删除,库尝试获取另一个令牌。成功
3)。将计算机的时间增加一天,在第2个线程中再次请求访问令牌。这次删除令牌并尝试通过发送请求获取另一个令牌。不幸的是,请求在30秒后最终超时。
有趣的是,如果我检查Charles或Fiddler中的请求,#2中的请求看起来很好 - 这是对正确端点的POST。 #3导致对“https://login.microsoftonline.com/”的CONNECT请求,没有相关的标题或正文内容。我已经查看了调试器中的请求,#3似乎就像#2中的请求一样被创建。
遗憾的是,我无法在较小的项目中重现它。谢谢你的时间。
答案 0 :(得分:0)
事实证明这是我使用async / await的方式的问题,而不是ADAL库的问题。我会关闭并创建一个新问题。