public virtual bool TryImportWsspIssuedTokenAssertion(MetadataImporter importer, PolicyConversionContext policyContext, XmlElement assertion, out SecurityTokenParameters parameters) { parameters = null; SecurityTokenInclusionMode inclusionMode; Collection<Collection<XmlElement>> alternatives; EndpointAddress issuer; EndpointAddress issuerMetadata; Collection<XmlElement> requestSecurityTokenTemplate; if (IsWsspAssertion(assertion, IssuedTokenName) && TryGetIncludeTokenValue(assertion, out inclusionMode) && TryGetIssuer(assertion, out issuer, out issuerMetadata) && TryGetRequestSecurityTokenTemplate(assertion, out requestSecurityTokenTemplate)) { if (TryGetNestedPolicyAlternatives(importer, assertion, out alternatives)) { foreach (Collection<XmlElement> alternative in alternatives) { IssuedSecurityTokenParameters issued = new IssuedSecurityTokenParameters(); parameters = issued; if (TryImportWsspRequireDerivedKeysAssertion(alternative, issued) && TryImportReferenceStyleAssertion(alternative, issued) && alternative.Count == 0) { issued.InclusionMode = inclusionMode; issued.IssuerAddress = issuer; issued.IssuerMetadataAddress = issuerMetadata; issued.SetRequestParameters(requestSecurityTokenTemplate, this.TrustDriver); TokenIssuerPolicyResolver policyResolver = new TokenIssuerPolicyResolver(this.TrustDriver); policyResolver.ResolveTokenIssuerPolicy(importer, policyContext, issued); break; } else { parameters = null; } } } else { IssuedSecurityTokenParameters issued = new IssuedSecurityTokenParameters(); parameters = issued; issued.InclusionMode = inclusionMode; issued.IssuerAddress = issuer; issued.IssuerMetadataAddress = issuerMetadata; issued.SetRequestParameters(requestSecurityTokenTemplate, this.TrustDriver); issued.RequireDerivedKeys = false; } } return parameters != null; }
public virtual bool TryImportWsspIssuedTokenAssertion(MetadataImporter importer, PolicyConversionContext policyContext, XmlElement assertion, out SecurityTokenParameters parameters) { SecurityTokenInclusionMode mode; EndpointAddress address; EndpointAddress address2; Collection<XmlElement> collection2; parameters = null; if ((this.IsWsspAssertion(assertion, "IssuedToken") && this.TryGetIncludeTokenValue(assertion, out mode)) && (this.TryGetIssuer(assertion, out address, out address2) && this.TryGetRequestSecurityTokenTemplate(assertion, out collection2))) { Collection<Collection<XmlElement>> collection; if (this.TryGetNestedPolicyAlternatives(importer, assertion, out collection)) { foreach (Collection<XmlElement> collection3 in collection) { IssuedSecurityTokenParameters parameters2 = new IssuedSecurityTokenParameters(); parameters = parameters2; if ((this.TryImportWsspRequireDerivedKeysAssertion(collection3, parameters2) && this.TryImportReferenceStyleAssertion(collection3, parameters2)) && (collection3.Count == 0)) { parameters2.InclusionMode = mode; parameters2.IssuerAddress = address; parameters2.IssuerMetadataAddress = address2; parameters2.SetRequestParameters(collection2, this.TrustDriver); new TokenIssuerPolicyResolver(this.TrustDriver).ResolveTokenIssuerPolicy(importer, policyContext, parameters2); break; } parameters = null; } } else { IssuedSecurityTokenParameters parameters3 = new IssuedSecurityTokenParameters(); parameters = parameters3; parameters3.InclusionMode = mode; parameters3.IssuerAddress = address; parameters3.IssuerMetadataAddress = address2; parameters3.SetRequestParameters(collection2, this.TrustDriver); parameters3.RequireDerivedKeys = false; } } return (parameters != null); }