我正在遵循此指南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时应该有类似的问题......
答案 0 :(得分:2)
建议的最佳做法是在每次调用之前刷新访问令牌。这是一种解决方法,用于编写检查访问令牌到期日期和时间的代码,并在令牌即将过期时刷新令牌。
要刷新通常缓存的访问令牌,只需使用相同的上下文再次调用AcquireToken
方法即可。
AuthenticationResult result = authContext.AcquireToken(resource, clientId, new Uri(redirectUrl));