Ejemplo n.º 1
0
        private KerberosTicket GetTGTCachedToken(AccountCredential inputCredential, string inputServerPrincipleName)
        {
            cacheLock.EnterReadLock();
            KerberosTicket cachedTGTToken = null;

            CacheTokenKey findedKey = null;

            foreach (var kvp in TGTTokenCache)
            {
                int address = this.credential.GetHashCode();
                if (kvp.Key.CredentialAddress.Equals(inputCredential) && kvp.Key.ServerPrincipleName.Equals(inputServerPrincipleName))
                {
                    findedKey = kvp.Key;
                    break;
                }
            }
            if (findedKey != null)
            {
                cachedTGTToken = TGTTokenCache[findedKey];
                //TODO: Remove from cache if token expired
            }
            cacheLock.ExitReadLock();

            return(cachedTGTToken);
        }
Ejemplo n.º 2
0
 private void UpdateTGTCachedToken(KerberosTicket tgtToken)
 {
     cacheLock.EnterWriteLock();
     try
     {
         CacheTokenKey findedKey = null;
         int           address   = this.credential.GetHashCode();
         foreach (var kvp in TGTTokenCache)
         {
             if (kvp.Key.CredentialAddress.Equals(address) && kvp.Key.ServerPrincipleName.Equals(this.serverName))
             {
                 findedKey = kvp.Key;
                 break;
             }
         }
         if (findedKey != null)
         {
             TGTTokenCache[findedKey] = tgtToken;
         }
         else
         {
             TGTTokenCache.Add(new CacheTokenKey()
             {
                 CredentialAddress = address, ServerPrincipleName = serverName
             }, tgtToken);
         }
     }
     finally
     {
         cacheLock.ExitWriteLock();
     }
 }