【问题标题】:Whats the expiry time for access token in Azure Managed Identity?Azure 托管标识中访问令牌的到期时间是多少?
【发布时间】: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


【解决方案1】:

默认情况下,访问令牌会在 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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 2012-03-12
      • 2022-11-10
      • 2018-06-26
      • 1970-01-01
      相关资源
      最近更新 更多