public override SecurityKeyIdentifierClause CreateKeyIdentifierClauseFromTokenXmlCore(XmlElement issuedTokenXml, SecurityTokenReferenceStyle tokenReferenceStyle) { TokenReferenceStyleHelper.Validate(tokenReferenceStyle); switch (tokenReferenceStyle) { case SecurityTokenReferenceStyle.Internal: return(CreateDirectReference(issuedTokenXml, UtilityStrings.IdAttribute, UtilityStrings.Namespace, typeof(SecurityContextSecurityToken))); case SecurityTokenReferenceStyle.External: UniqueId contextId = null; UniqueId generation = null; foreach (XmlNode node in issuedTokenXml.ChildNodes) { XmlElement element = node as XmlElement; if (element != null) { if (element.LocalName == Parent.SerializerDictionary.Identifier.Value && element.NamespaceURI == Parent.SerializerDictionary.Namespace.Value) { contextId = XmlHelper.ReadTextElementAsUniqueId(element); } else if (CanReadGeneration(element)) { generation = ReadGeneration(element); } } } return(new SecurityContextKeyIdentifierClause(contextId, generation)); default: throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("tokenReferenceStyle")); } }
public override SecurityKeyIdentifierClause CreateKeyIdentifierClauseFromTokenXmlCore(XmlElement issuedTokenXml, SecurityTokenReferenceStyle tokenReferenceStyle) { TokenReferenceStyleHelper.Validate(tokenReferenceStyle); if (tokenReferenceStyle == SecurityTokenReferenceStyle.Internal) { return(WSSecurityTokenSerializer.TokenEntry.CreateDirectReference(issuedTokenXml, "Id", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", typeof(SecurityContextSecurityToken))); } if (tokenReferenceStyle != SecurityTokenReferenceStyle.External) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError((Exception) new ArgumentOutOfRangeException("tokenReferenceStyle")); } UniqueId contextId = (UniqueId)null; UniqueId generation = (UniqueId)null; foreach (XmlNode childNode in issuedTokenXml.ChildNodes) { XmlElement element = childNode as XmlElement; if (element != null) { if (element.LocalName == this.parent.SerializerDictionary.Identifier.Value && element.NamespaceURI == this.parent.SerializerDictionary.Namespace.Value) { contextId = XmlHelper.ReadTextElementAsUniqueId(element); } else if (this.CanReadGeneration(element)) { generation = this.ReadGeneration(element); } } } return((SecurityKeyIdentifierClause) new SecurityContextKeyIdentifierClause(contextId, generation)); }
protected override UniqueId ReadGeneration(XmlElement element) { return(XmlHelper.ReadTextElementAsUniqueId(element)); }