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); }
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(); } }