【问题标题】:Best practice to handle refresh AAD token when using Azure Resource Management API使用 Azure 资源管理 API 时处理刷新 AAD 令牌的最佳实践
【发布时间】:2016-09-10 19:39:22
【问题描述】:

我正在按照此指导 https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-create-linux-clusters-dotnet-sdk/ 使用基于 ARM 的 HDInsight 客户端来创建集群。

逻辑是这样的:

var authToken = authContext.AcquireToken(params...);
var hdiClient = new HDInsightManagementClient(authToken);
hdiClient.Clusters.Create(params...);
//use hdiClient to do other things, like create clusters ...

因为 AAD 令牌只有 1 小时的到期时间。当我使用hdiClient创建集群并查询状态时,真的很容易被击中。在这种情况下,我需要将我用来处理更新令牌的所有方法都包装在 hdiClient 中。

是否有任何最佳实践来处理这个问题?或者是否有一个令牌过期事件暴露给用户来处理它?虽然我的案例是 HDInsight 场景,但我认为所有 Azure 资源管理器客户端在使用 AAD 时都应该有类似的问题......

【问题讨论】:

    标签: azure azure-active-directory azure-hdinsight azure-resource-manager azure-sdk-.net


    【解决方案1】:

    建议的最佳做法是在每次调用之前刷新访问令牌。这是编写检查访问令牌到期日期和时间并在令牌即将到期时刷新令牌的代码的一种解决方法。

    要刷新通常缓存的访问令牌,您只需使用相同的上下文再次调用AcquireToken 方法。

    AuthenticationResult result = authContext.AcquireToken(resource, clientId, new Uri(redirectUrl));
    

    【讨论】:

    • 在实际场景中,与客户端进行CRUD操作时,也有很多查询API用于获取集群状态。如果每次通话,我都需要刷新。这将是我提到的解决方案,将我用来处理更新令牌的所有方法都包装在 hdiClient 中......
    猜你喜欢
    • 2019-03-23
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 2017-07-05
    • 2011-05-17
    • 1970-01-01
    • 2021-12-27
    相关资源
    最近更新 更多