【发布时间】:2019-01-04 11:04:27
【问题描述】:
我正在使用以下代码生成访问令牌,以使用 AAD 身份验证将我的应用程序代码连接到 Azure SQL。我需要找出这个令牌的到期时间
为了找到过期时间,我尝试了两种方法:
1) 创建一个连接到 Azure SQL 并使用 AAD 身份验证执行一些数据操作的控制台应用程序。在一个循环中连续运行这个应用程序一个多小时。这里发现令牌在 1 小时后过期
2) 在 iisexpress 中创建一个 Web 应用程序和主机。在 Web 应用程序中,编写与控制台应用程序相同的数据访问代码。在一个多小时内多次循环调用 Web App url。在这里,令牌也将在大约 1 小时后到期
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;
【问题讨论】:
-
每次通话前您是否都从提供商处获取令牌?它会在必要时自动刷新令牌。
-
是的,每次都获取token。第一次调用将需要 3-4 秒。下一次它将以毫秒为单位发生,直到它过期。由于获取新令牌有延迟,我想知道我们预计这种延迟的频率。
标签: azure azure-active-directory