【问题标题】:How the AAD token is refreshed after expiry?AAD 令牌到期后如何刷新?
【发布时间】:2021-06-19 15:40:18
【问题描述】:

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

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

问题:

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

【问题讨论】:

  • 根据this doc,DefaultAzureCredential 提供了一个“GetToken”方法,这将返回访问令牌,然后您可以获取“ExpiresOn”属性来收集时间戳。你可以使用powershell来manage access token expire policy

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 2021-05-10
    • 2018-02-10
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多