使用Azure Resource Management API时处理刷新AAD令牌的最佳做法

时间:2016-09-10 19:39:23

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

我正在遵循此指南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 Resource Manager客户端在使用AAD时应该有类似的问题......

1 个答案:

答案 0 :(得分:2)

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

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

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