internal static XmlElement GetClaimTypeRequirement(Collection <XmlElement> additionalRequestParameters, SecurityStandardsManager standardsManager) { foreach (XmlElement requestParameter in additionalRequestParameters) { if (requestParameter.LocalName == ((WSTrust.Driver)standardsManager.TrustDriver).DriverDictionary.Claims.Value && requestParameter.NamespaceURI == ((WSTrust.Driver)standardsManager.TrustDriver).DriverDictionary.Namespace.Value) { return(requestParameter); } if (requestParameter.LocalName == DXD.TrustDec2005Dictionary.SecondaryParameters.Value && requestParameter.NamespaceURI == DXD.TrustDec2005Dictionary.Namespace.Value) { Collection <XmlElement> additionalRequestParameters1 = new Collection <XmlElement>(); foreach (XmlNode childNode in requestParameter.ChildNodes) { XmlElement xmlElement = childNode as XmlElement; if (xmlElement != null) { additionalRequestParameters1.Add(xmlElement); } } XmlElement claimTypeRequirement = IssuedSecurityTokenParameters.GetClaimTypeRequirement(additionalRequestParameters1, standardsManager); if (claimTypeRequirement != null) { return(claimTypeRequirement); } } } return((XmlElement)null); }
public static bool IsInfoCardParameters(IssuedSecurityTokenParameters parameters, SecurityStandardsManager standardsManager) { if (parameters == null || parameters.TokenType != "http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1" || parameters.KeyType != SecurityKeyType.AsymmetricKey) { return(false); } if (parameters.ClaimTypeRequirements.Count == 1) { ClaimTypeRequirement claimTypeRequirement = parameters.ClaimTypeRequirements[0]; if (claimTypeRequirement == null || claimTypeRequirement.ClaimType != IssuedSecurityTokenParameters.wsidPPIClaim) { return(false); } } else { if (parameters.AdditionalRequestParameters == null || parameters.AdditionalRequestParameters.Count <= 0) { return(false); } bool flag = false; XmlElement claimTypeRequirement = IssuedSecurityTokenParameters.GetClaimTypeRequirement(parameters.AdditionalRequestParameters, standardsManager); if (claimTypeRequirement != null && claimTypeRequirement.ChildNodes.Count == 1) { XmlElement childNode = claimTypeRequirement.ChildNodes[0] as XmlElement; if (childNode != null) { XmlNode namedItem = childNode.Attributes.GetNamedItem("Uri"); if (namedItem != null && namedItem.Value == IssuedSecurityTokenParameters.wsidPPIClaim) { flag = true; } } } if (!flag) { return(false); } } return(!(parameters.IssuerAddress != (EndpointAddress)null) && (parameters.AlternativeIssuerEndpoints == null || parameters.AlternativeIssuerEndpoints.Count <= 0)); }