2

이 지침 https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-create-linux-clusters-dotnet-sdk/에 따라 ARM 기반 HDInsight 클라이언트를 사용하여 클러스터를 만들 예정입니다.Azure Resource Management 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