2017-10-24 2 views
2

Azure AD App 등록으로 내 애플리케이션을 등록했습니다.만료 시간 전에 동일한 토큰을 반환하는 AcquireToken 비동기

내 시나리오에서 항상 동일한 토큰을 반환하는 클라이언트 자격 증명을 사용하여 Azure Adal AquireTokenAsync 메서드를 사용하고 있습니다.

모든 사용자 세션마다 새 토큰이 필요합니다.

테스트 용도 콘솔 응용 프로그램에서 동작을 테스트했습니다.

string authority = String.Format(CultureInfo.InvariantCulture, 
     ConfigurationManager.AppSettings["ida:AADInstance"], 
     ConfigurationManager.AppSettings["ida:Tenant"]); 

     AuthenticationContext authContext = new AuthenticationContext(authority, false); 
     ClientCredential clientCredential = new ClientCredential(ConfigurationManager.AppSettings["ida:ClientId"], ConfigurationManager.AppSettings["ida:AppKey"]); 
     AuthenticationResult result = null; 
     int retryCount = 0; 
     bool retry = false; 
     retry = false; 
     try 
     { 
      result = await authContext.AcquireTokenAsync(ConfigurationManager.AppSettings["ida:ResourceId"], clientCredential); 
      result = await authContext.AcquireTokenAsync(ConfigurationManager.AppSettings["ida:ResourceId"], clientCredential); 
     } 
     catch (AdalException ex) 
     { 

     } 
     finally 
     { 
      authContext = null; 
     } 

두 호출 모두 동일한 토큰을 반환합니다.

그러나 새로 실행될 때마다 새 토큰이 반환됩니다.

답변

0

ADAL 상황에 맞는 캐시가 계속 좋아하십시오 : 그래서, 당신은 새로운 토큰을 AcquireTokenAsync를 호출 할 때마다하고 싶은 경우는 AuthenticationContext 객체를 생성 할 때 TokenCache가 null 설정 캐시를 지우려면 캐시를 지우십시오.

authContext.TokenCache.Clear(); 

캐시를 지우십시오.

1

내부에 AuthenticationContext이 있기 때문에 id_token을 캐시하려면 TokenCache이 있어야합니다.

AuthenticationContext authContext = new AuthenticationContext(authority, false, null); 

당신이 그것을 얻을 필요가 token.If the link

관련 문제