尝试在不同线程上更新ADAL访问令牌时发生HTTP超时异常

本文关键字:访问令牌 HTTP 异常 超时 ADAL 更新 线程 | 更新日期: 2023-09-27 18:03:23

我遇到了一个非常难以调试的问题,与ADAL在不同线程上更新访问令牌有关。我的情况是,我试图使用ADAL库来获取AD应用程序连接到SQL Azure数据库的访问令牌。我正在自动注册中获取令牌,以便每次有人请求它时,它都会重新执行(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中的请求一样被创建。

不幸的是,我没能在一个较小的项目中复制它。感谢您的宝贵时间。

尝试在不同线程上更新ADAL访问令牌时发生HTTP超时异常

原来这是我使用async/await的方式的问题,而不是ADAL库的问题。我将关闭并创建一个新问题