我正在使用下面的代码来生成访问令牌,以使用AAD身份验证将我的应用程序代码连接到Azure SQL。我需要找出该令牌的到期时间
要找到有效期,我尝试了两种方法:
1)创建一个连接到Azure SQL的控制台应用程序,并使用AAD身份验证执行一些数据操作。连续循环运行此应用程序超过一个小时。在这里发现令牌在1小时后失效
2)创建一个Web应用程序并在iisexpress中托管。在Web应用程序中,编写与控制台应用程序中相同的数据访问代码。循环调用Web App URL超过一个小时。在这里令牌也将在大约一个小时内过期
3)与第2点相同,不同之处在于Web应用程序托管在启用了托管身份的Azure中。这里的令牌在1小时后没有过期。
因此令牌到期链接到进行呼叫的环境。我需要找出不同情况下令牌的确切到期时间。我找不到任何文档。我发现的是令牌将被缓存在内存中,并且将在过期后进行续签。
var provider = new AzureServiceTokenProvider();
string token = provider.GetAccessTokenAsync("https://database.windows.net/").Result;
SqlConnection con = new SqlConnection("connstring");
con.AccessToken = token;
答案 0 :(得分:0)
默认情况下,访问令牌会在1小时后过期。
通过App Authentication库获取的令牌当前会在少于5分钟的时间内刷新,直到它们过期。 因此,在默认情况下,它会将令牌缓存55分钟。
答案 1 :(得分:0)
那不是我的经验。在您提供的类似场景中,我能够使用令牌 24 小时,即使在生成过程中,我也可以看到令牌生命周期的设置位置(86400 秒)。但是,这是使用 VM 系统分配的托管 ID。这是在上周内测试过的。
我们已经看到令牌生命周期的差异取决于请求令牌的服务类别/类别(例如,计算(VM)、管理和治理(AA)等)