internal void SetRequestParameters(Collection <XmlElement> requestParameters, TrustDriver trustDriver) { if (requestParameters == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(requestParameters)); } if (trustDriver == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(trustDriver)); } Collection <XmlElement> unknownRequestParameters = new Collection <XmlElement>(); foreach (XmlElement element in requestParameters) { if (trustDriver.TryParseKeySizeElement(element, out int keySize)) { _keySize = keySize; } else if (trustDriver.TryParseKeyTypeElement(element, out SecurityKeyType keyType)) { KeyType = keyType; } else if (trustDriver.TryParseTokenTypeElement(element, out string tokenType)) { TokenType = tokenType; } // Only copy RP policy to client policy for TrustFeb2005 else if (trustDriver.StandardsManager.TrustVersion == TrustVersion.WSTrustFeb2005) { if (trustDriver.TryParseRequiredClaimsElement(element, out Collection <XmlElement> requiredClaims)) { Collection <XmlElement> unrecognizedRequiredClaims = new Collection <XmlElement>(); foreach (XmlElement claimRequirement in requiredClaims) { if (claimRequirement.LocalName == "ClaimType" && claimRequirement.NamespaceURI == wsidNamespace) { string claimValue = claimRequirement.GetAttribute("Uri", string.Empty); if (!string.IsNullOrEmpty(claimValue)) { ClaimTypeRequirement claimTypeRequirement; string optional = claimRequirement.GetAttribute("Optional", string.Empty); if (string.IsNullOrEmpty(optional)) { claimTypeRequirement = new ClaimTypeRequirement(claimValue); } else { claimTypeRequirement = new ClaimTypeRequirement(claimValue, XmlConvert.ToBoolean(optional)); } ClaimTypeRequirements.Add(claimTypeRequirement); } } else { unrecognizedRequiredClaims.Add(claimRequirement); } } if (unrecognizedRequiredClaims.Count > 0) { unknownRequestParameters.Add(trustDriver.CreateRequiredClaimsElement(unrecognizedRequiredClaims)); } } else { unknownRequestParameters.Add(element); } } } unknownRequestParameters = trustDriver.ProcessUnknownRequestParameters(unknownRequestParameters, requestParameters); if (unknownRequestParameters.Count > 0) { for (int i = 0; i < unknownRequestParameters.Count; ++i) { AdditionalRequestParameters.Add(unknownRequestParameters[i]); } } }
internal static bool IsInfoCardParameters(IssuedSecurityTokenParameters parameters, SecurityStandardsManager standardsManager) { if (parameters == null) { return(false); } if (parameters.TokenType != SecurityXXX2005Strings.SamlTokenType) { return(false); } if (parameters.KeyType != SecurityKeyType.AsymmetricKey) { return(false); } if (parameters.ClaimTypeRequirements.Count == 1) { ClaimTypeRequirement claimTypeRequirement = parameters.ClaimTypeRequirements[0] as ClaimTypeRequirement; if (claimTypeRequirement == null) { return(false); } if (claimTypeRequirement.ClaimType != wsidPPIClaim) { return(false); } } else if ((parameters.AdditionalRequestParameters != null) && (parameters.AdditionalRequestParameters.Count > 0)) { // Check the AdditionalRequest Parameters to see if ClaimTypeRequirements got imported there. bool claimTypeRequirementMatched = false; XmlElement claimTypeRequirement = GetClaimTypeRequirement(parameters.AdditionalRequestParameters, standardsManager); if (claimTypeRequirement != null && claimTypeRequirement.ChildNodes.Count == 1) { XmlElement claimTypeElement = claimTypeRequirement.ChildNodes[0] as XmlElement; if (claimTypeElement != null) { XmlNode claimType = claimTypeElement.Attributes.GetNamedItem("Uri"); if (claimType != null && claimType.Value == wsidPPIClaim) { claimTypeRequirementMatched = true; } } } if (!claimTypeRequirementMatched) { return(false); } } else { return(false); } if (parameters.IssuerAddress != null) { return(false); } if (parameters.AlternativeIssuerEndpoints != null && parameters.AlternativeIssuerEndpoints.Count > 0) { return(false); } return(true); }