2

Я следую этому руководству https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-create-linux-clusters-dotnet-sdk/, чтобы использовать клиент HDInsight на основе ARM для создания кластеров.Лучшая практика обработки обновленного токена AAD при использовании API управления ресурсами Azure

Логика такова:

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 ...

ответ

2

Рекомендованная рекомендация по обновлению токена доступа перед каждым вызовом. Это временное решение для написания кода, который проверяет дату и время истечения токена доступа и обновляет токен, когда он скоро истечет.

Чтобы обновить токен доступа, который обычно кэшируется, вы снова вызываете метод AcquireToken, используя тот же контекст.

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

В реальном сценарии существует также много API запросов, используемых для получения статуса кластера при выполнении операций CRUD с клиентом. Если для каждого вызова мне нужно обновить. Это будет решение, о котором я упомянул, обернуть все методы в hdiClient, которые я использовал для обработки обновленных токенов ... – Mingyang