Azure托管身份中的访问令牌的到期时间是什么?

时间:2019-01-04 11:04:28

标签: azure azure-active-directory

我正在使用下面的代码来生成访问令牌,以使用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;

2 个答案:

答案 0 :(得分:0)

默认情况下,访问令牌会在1小时后过期。

通过App Authentication库获取的令牌当前会在少于5分钟的时间内刷新,直到它们过期。 因此,在默认情况下,它会将令牌缓存55分钟。

您可以在此处查看库在何处定义到期时间:https://github.com/Azure/azure-sdk-for-net/blob/e3bc748ea19040f9f18375aa907246f5b8b882a7/src/SdkCommon/AppAuthentication/Azure.Services.AppAuthentication/AppAuthenticationResult.cs#L40-L44

答案 1 :(得分:0)

那不是我的经验。在您提供的类似场景中,我能够使用令牌 24 小时,即使在生成过程中,我也可以看到令牌生命周期的设置位置(86400 秒)。但是,这是使用 VM 系统分配的托管 ID。这是在上周内测试过的。

我们已经看到令牌生命周期的差异取决于请求令牌的服务类别/类别(例如,计算(VM)、管理和治理(AA)等)