我正在使用下面的代码生成访问令牌,以使用AAD身份验证将我的应用程序代码连接到Azure SQL。我需要知道这个令牌的过期时间。
为了找到过期时间,我尝试了两种方法:
1)创建一个连接到Azure SQL的控制台应用程序,并使用AAD身份验证执行一些数据操作。连续循环运行此应用程序超过一个小时。此处发现令牌在1小时后过期
2)在iisexpress中创建Web App和主机。在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;
发布于 2019-01-04 20:00:23
默认情况下,访问令牌将在1小时后过期。
当前通过应用验证库获取的令牌在距离到期时间不足5分钟时会被刷新。因此,在默认情况下,它会缓存令牌55分钟。
发布于 2021-05-05 02:55:38
这不是我的经验。在您提供的类似场景中,我能够使用令牌24小时,甚至在生成过程中,我也可以看到令牌的生存期设置在哪里(86400秒)。但是,这是使用VM系统分配的托管ID。这是在上周测试的。
我们已经看到令牌生存期的不同取决于请求令牌的服务类别/类别(例如,计算(VM)、管理和治理(AA)等)
https://stackoverflow.com/questions/54037738
复制相似问题