2017-10-24 10 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コンテキストキャッシュを好むしてくださいキャッシュをクリアしてください。

authContext.TokenCache.Clear(); 

キャッシュをクリアしてください。

1

AuthenticationContextの内部には、id_tokenをキャッシュするためにTokenCacheがあるためです。あなたがAcquireTokenAsyncを呼び出して新しいトークンを毎回持っているしたいのであれば、TokenCacheを設定AuthenticationContextオブジェクトを作成するときにnullである:

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

あなたがそれを取得する必要がありtoken.If保つthe link

関連する問題