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

Raj*_*j V 1 java azure azure-java-sdk azure-storage-account azure-sdk

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

它的完成方式如下。

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

湾 如果上述缓存中没有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);
Run Code Online (Sandbox Code Playgroud)

C。使用订阅 ID 获取 Azure 对象

azure = authenticatedClient.withSubscription(subscription.getSubscriptionId());
Run Code Online (Sandbox Code Playgroud)

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
        }
Run Code Online (Sandbox Code Playgroud)

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

一种。这个对象的 TTL 是多少?

湾 我应该创建一个新的天蓝色对象,以防 TTL 过期?

C。或者 sdk api 会负责用新的令牌更新令牌吗?

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

Rah*_*haw 5

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

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

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

答:TTL 到期后无需创建新对象,您可以刷新并生成新令牌并将该令牌分配给同一对象。

C) 或者 sdk api 会负责用新的令牌更新令牌吗?

答:是的,API 将使用新令牌更新令牌。令牌是允许应用程序系统执行授权和身份验证过程的工件。