2

この案内https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-create-linux-clusters-dotnet-sdk/に従っているので、ARMベースのHDInsightクライアントを使用してクラスタを作成しています。Azureリソース管理APIを使用しているときにリフレッシュAADトークンを処理するためのベストプラクティス

ロジックはこのようなものです:AADとして

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

は、トークンだけで1時間の有効期限があります。 hdiClientを使用してクラスターを作成し、状況を照会すると、ヒットするのは簡単です。この場合、更新トークンの処理に使用したhdiClientのすべてのメソッドをラップする必要があります。

これを処理するベストプラクティスはありますか?または、それを処理するためにユーザーに公開されたトークン期限切れイベントがありますか?私のケースでは、HDInsightのシナリオでは、AADを使用する場合、すべてのAzure Resource Managerクライアントで同様の問題が発生するはずです...

答えて

2

各呼び出しの前にアクセストークンを更新することをお勧めします。これは、アクセストークンの有効期限の日付と時刻をチェックし、期限が切れそうになったときにトークンをリフレッシュするコードを作成するための回避策です。

キャッシュされているアクセストークンをリフレッシュするには、同じコンテキストを使用してAcquireTokenメソッドを再度呼び出します。

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

実際のシナリオでは、クライアントとのCRUD操作を実行するときにクラスタステータスを取得するために使用されるクエリAPIも多数あります。それぞれの呼び出しの場合、私はリフレッシュする必要はありません。それは私が言及した解決策、私は更新トークンのものを処理するために使用されたhdiClientのすべてのメソッドをラップします... – Mingyang

関連する問題