AAD令牌过期后如何刷新?

时间:2021-03-23 00:02:22

标签: azure-active-directory azure-managed-identity

我正在开发一个 SDK,我们将遥测(1000 个事件/分钟)发送到 Microsoft 拥有的摄取服务。(SDK 由托管在 Azure VMS 或应用服务上的 web 应用程序使用)摄取服务目前支持使用托管身份进行身份验证(系统和用户分配)。我的想法是依赖 Azure Identity SDK 并使用“TokenCredential”的现有 DefaultAzureCredential 或 ManagedIdentityCredential 实现来获取如下所示的令牌,并在初始化 sdk 时使用此 defaultCredential。初始化 sdk 后,我的想法是获取令牌并附加到每个请求的授权标头。

DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
    .managedIdentityClientId("<MANAGED_IDENTITY_CLIENT_ID>")
    .build();

问题:

  1. 令牌多久刷新一次?如何控制这些令牌的到期时间?
  2. 当令牌过期时,托管身份是否足够智能以调用 AAD 并获取新令牌。或者是 SDK(客户端)负责获取新令牌并更新标头。

1 个答案:

答案 0 :(得分:0)

在我看来,令牌不会自动刷新,如果您想知道过期时间,可以使用 fiddler 之类的工具来捕获使用令牌的请求并使用 jwo.io 对其进行解码,您将得到'exp'的声明,它是一个unix时间戳,你可以转换它然后你就可以知道过期时间。

并且过期时间由您租户的策略管理,您可以按照 the tutorial 为您的访问令牌创建策略。并且因为您的代码只是 new DefaultAzureCredential(),所以任何时候执行该行,它都会生成一个新实例,这样您就不必担心令牌过期了。