java - Azure Java SDK - Azure 身份验证对象 - 过期和处理

标签 java azure azure-sdk azure-storage-account azure-java-sdk

我正在尝试列出给定订阅的存储帐户,并尝试拉取该订阅的所有 Blob 端点。

其实现方式如下。

a.使用 subscriptionId 与 Azure.Authenticated 对象创建缓存。这基本上是为了复用,供后续业务流程中sdk api调用

b.如果上述缓存中不存在subscriptionid,则按如下方式创建Azure.Authenticated对象,并将其放入缓存中

ApplicationTokenCredentials credentials = new ApplicationTokenCredentials(
    subscription.getClientId(),
    subscription.getTenantId(),
    subscription.getKey(),
    subscription.getEnvironmentType().getEnvironment());

Azure.Authenticated = Azure.configure()
    .withLogLevel(LogLevel.NONE)
    .authenticate(credentials);

c.使用订阅 ID 获取 Azure 对象

azure = authenticatedClient.withSubscription(subscription.getSubscriptionId());

d.使用 storageAccounts 列表 API 来分页并列出给定订阅的所有存储帐户。

try {
              PagedList<StorageAccount> strgAccList = azure.storageAccounts().list();
          boolean hasNextPage = null != strgAccList.currentPage();
          int pageCount = 0;
          if (hasNextPage) {
            while (hasNextPage) {
              ++pageCount;
              Page<StorageAccount> resourcePage = strgAccList.currentPage();
              Iterator<StorageAccount> it = resourcePage.items().iterator();
              while (it.hasNext()) {
                StorageAccount storageAccount = it.next();
                storageAccounts.put(storageAccount.name(), storageAccount);
              }
              hasNextPage = strgAccList.hasNextPage();
              if (hasNextPage) {
                strgAccList.loadNextPage();
              }
            }
          }
        } catch (Exception e) {
          //log exception here
        }

由于这个 azure 对象已被缓存,因此该对象(我假设其中包含一个 token )可能会在本次迭代中过期,或者最终会导致异常情况。 我的问题是

a.该对象的 TTL 是多少?

b.我应该创建一个新的 azure 对象,以防 TTL 过期吗?

c.或者 sdk api 会负责用新的 token 更新 token 吗?

文档没有帮助(我也没有看到),我在azure java sdk github项目中进行了搜索。那里的样本也没有任何帮助。 请用一切智慧来启发我。谢谢!

最佳答案

a)这个对象的 TTL 是多少?

回答:由于您假设将 token 包装在对象中,因此该对象的 TTL 取决于访问 token 的到期时间。过期时间默认值为 86,400 秒(24 小时) 引用:https://auth0.com/docs/security/tokens/access-tokens/update-access-token-lifetime

b) 我应该创建一个新的 azure 对象,以防 TTL 过期吗?

答案:一旦 TTL 过期,无需创建新对象,您可以刷新并生成新 token ,并将该 token 分配给同一个对象。

C) 或者 sdk api 会负责用新 token 更新 token 吗?

回答:是的,SDK API 将在需要时使用新 token 更新 token 。 token 是允许应用程序系统执行授权和身份验证过程的工件。

关于java - Azure Java SDK - Azure 身份验证对象 - 过期和处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68982213/

相关文章:

java - 可重载缓存

java - Struts2 属性文件重新加载

java - Mongo 2.6.x GridFS 和 java 驱动程序

java - JaCoCo 代理不跟踪代码覆盖率信息

azure - cosmos 中的多个 order by

visual-studio - 在 Visual Studio 中,使用 Windows Azure 存储, "Remember Account Key"保存在哪里?

javascript - 使用 Nodejs 中的 azure 函数将图像从 URL 上传到 azure blob

java - 如何使用 Azure Java SDK 发送和接收消息

azure - 尝试发布 Azure API。 VS2017似乎没有最新的Azure SDK

Azure 函数未按计划时间触发