private SecurityContextSecurityToken TryResolveSecurityContextToken(UniqueId contextId, UniqueId generation, string id, SecurityTokenResolver tokenResolver, out ISecurityContextSecurityTokenCache sctCache) { SecurityContextSecurityToken sourceToken = (SecurityContextSecurityToken)null; sctCache = (ISecurityContextSecurityTokenCache)null; if (tokenResolver is ISecurityContextSecurityTokenCache) { sctCache = (ISecurityContextSecurityTokenCache)tokenResolver; sourceToken = sctCache.GetContext(contextId, generation); } else { #if FEATURE_CORECLR throw new NotImplementedException("AggregateSecurityHeaderTokenResolver not supported in .NET Core"); #else if (tokenResolver is AggregateSecurityHeaderTokenResolver) { AggregateSecurityHeaderTokenResolver headerTokenResolver = tokenResolver as AggregateSecurityHeaderTokenResolver; for (int index = 0; index < headerTokenResolver.TokenResolvers.Count; ++index) { ISecurityContextSecurityTokenCache tokenResolver1 = headerTokenResolver.TokenResolvers[index] as ISecurityContextSecurityTokenCache; if (tokenResolver1 != null) { if (sctCache == null) { sctCache = tokenResolver1; } sourceToken = tokenResolver1.GetContext(contextId, generation); if (sourceToken != null) { break; } } } } #endif } if (sourceToken == null) { return((SecurityContextSecurityToken)null); } if (sourceToken.Id == id) { return(sourceToken); } return(new SecurityContextSecurityToken(sourceToken, id)); }
SecurityContextSecurityToken TryResolveSecurityContextToken(UniqueId contextId, UniqueId generation, string id, SecurityTokenResolver tokenResolver, out ISecurityContextSecurityTokenCache sctCache) { SecurityContextSecurityToken cachedSct = null; sctCache = null; if (tokenResolver is ISecurityContextSecurityTokenCache) { sctCache = ((ISecurityContextSecurityTokenCache)tokenResolver); cachedSct = sctCache.GetContext(contextId, generation); } else if (tokenResolver is AggregateSecurityHeaderTokenResolver) { // We will see if we have a ISecurityContextSecurityTokenCache in the // AggregateTokenResolver. We will hold the reference to the first sctCache // we find. AggregateSecurityHeaderTokenResolver aggregateTokenResolve = tokenResolver as AggregateSecurityHeaderTokenResolver; for (int i = 0; i < aggregateTokenResolve.TokenResolvers.Count; ++i) { ISecurityContextSecurityTokenCache oobTokenResolver = aggregateTokenResolve.TokenResolvers[i] as ISecurityContextSecurityTokenCache; if (oobTokenResolver == null) { continue; } if (sctCache == null) { sctCache = oobTokenResolver; } cachedSct = oobTokenResolver.GetContext(contextId, generation); if (cachedSct != null) { break; } } } if (cachedSct == null) { return(null); } else if (cachedSct.Id == id) { return(cachedSct); } else { return(new SecurityContextSecurityToken(cachedSct, id)); } }
private SecurityContextSecurityToken TryResolveSecurityContextToken(UniqueId contextId, UniqueId generation, string id, SecurityTokenResolver tokenResolver, out ISecurityContextSecurityTokenCache sctCache) { SecurityContextSecurityToken sourceToken = null; sctCache = null; if (tokenResolver is ISecurityContextSecurityTokenCache) { sctCache = (ISecurityContextSecurityTokenCache)tokenResolver; sourceToken = sctCache.GetContext(contextId, generation); } else if (tokenResolver is AggregateTokenResolver) { AggregateTokenResolver resolver = tokenResolver as AggregateTokenResolver; for (int i = 0; i < resolver.OutOfBandTokenResolver.Count; i++) { ISecurityContextSecurityTokenCache cache = resolver.OutOfBandTokenResolver[i] as ISecurityContextSecurityTokenCache; if (cache != null) { if (sctCache == null) { sctCache = cache; } sourceToken = cache.GetContext(contextId, generation); if (sourceToken != null) { break; } } } } if (sourceToken == null) { return(null); } if (sourceToken.Id == id) { return(sourceToken); } return(new SecurityContextSecurityToken(sourceToken, id)); }
SecurityContextSecurityToken TryResolveSecurityContextToken(UniqueId contextId, UniqueId generation, string id, SecurityTokenResolver tokenResolver, out ISecurityContextSecurityTokenCache sctCache) { SecurityContextSecurityToken cachedSct = null; sctCache = null; if (tokenResolver is ISecurityContextSecurityTokenCache) { sctCache = ((ISecurityContextSecurityTokenCache)tokenResolver); cachedSct = sctCache.GetContext(contextId, generation); } else if (tokenResolver is AggregateSecurityHeaderTokenResolver) { // We will see if we have a ISecurityContextSecurityTokenCache in the // AggregateTokenResolver. We will hold the reference to the first sctCache // we find. AggregateSecurityHeaderTokenResolver aggregateTokenResolve = tokenResolver as AggregateSecurityHeaderTokenResolver; for (int i = 0; i < aggregateTokenResolve.TokenResolvers.Count; ++i) { ISecurityContextSecurityTokenCache oobTokenResolver = aggregateTokenResolve.TokenResolvers[i] as ISecurityContextSecurityTokenCache; if (oobTokenResolver == null) { continue; } if (sctCache == null) { sctCache = oobTokenResolver; } cachedSct = oobTokenResolver.GetContext(contextId, generation); if (cachedSct != null) { break; } } } if (cachedSct == null) { return null; } else if (cachedSct.Id == id) { return cachedSct; } else { return new SecurityContextSecurityToken(cachedSct, id); } }