azure - 使用 Azure 资源管理 API 时处理刷新 AAD token 的最佳实践

标签 azure azure-active-directory azure-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 token 只有 1 小时的过期时间。当我使用hdiClient创建集群并查询状态时,确实很容易命中。在这种情况下,我需要将我用来处理更新 token 的所有方法包装在 hdiClient 中。

有没有最佳实践来处理这个问题?或者是否有向用户公开的 token 过期事件来处理它?虽然我的案例是 HDInsight 场景,但我认为所有 Azure 资源管理器客户端在使用 AAD 时都应该遇到类似的问题...

最佳答案

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

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

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

关于azure - 使用 Azure 资源管理 API 时处理刷新 AAD token 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39429926/

相关文章:

windows - 运行 MapReduce 作业时出错 : not a valid Inet address

azure - Logstash 无法向 Elasticsearch Master 发送加入请求

azure - 使用 Azure AD 测试应用程序

Azure应用程序注册: "Delegated permission" is disabled

azure - 委托(delegate) token 无效。指定的国家云 ID (1) 无效

azure - 从现有存储帐户将数据提取到HDInsight中

hadoop - 加载数据时 HDInsight VM 初始化错误

caching - Azure 共置缓存实例是内部的吗?

Azure 云服务(经典)- 将 Diagnostic.Trace 日志记录到 BLOB 存储的任何方式

deployment - 如何在Windows Azure中部署Orchard CMS?