private static IEnumerable<Claim> MatchesRule(PolicyRule rule, IEnumerable<Claim> inputClaims)
{
List<Claim> matchingClaims = new List<Claim>();
foreach (InputPolicyClaim inputPolicyClaim in rule.InputClaims)
{
var claimsMatched = inputClaims.Where(c => (c.Issuer == inputPolicyClaim.Issuer.Uri || c.OriginalIssuer == inputPolicyClaim.Issuer.Uri)
&& c.Type.Equals(inputPolicyClaim.ClaimType.FullName, StringComparison.OrdinalIgnoreCase)
&& ((inputPolicyClaim.Value == Wildcard) || (c.Value.ToUpperInvariant() == inputPolicyClaim.Value.ToUpperInvariant())));
matchingClaims.AddRange(claimsMatched);
}
return matchingClaims;
}