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); switch (tokenReferenceStyle) { case SecurityTokenReferenceStyle.Internal: return(CreateDirectReference(issuedTokenXml, UtilityStrings.IdAttribute, UtilityStrings.Namespace, TokenType)); case SecurityTokenReferenceStyle.External: string encoding = issuedTokenXml.GetAttribute(EncodingTypeAttributeString, null); string encodedData = issuedTokenXml.InnerText; byte[] binaryData; if (encoding == null || encoding == EncodingTypeValueBase64Binary) { binaryData = Convert.FromBase64String(encodedData); } else if (encoding == EncodingTypeValueHexBinary) { binaryData = HexBinary.Parse(encodedData).Value; } else { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.UnknownEncodingInBinarySecurityToken)); } return(CreateKeyIdentifierClauseFromBinaryCore(binaryData)); default: throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(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)); }
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(DerivedKeySecurityToken))); } if (tokenReferenceStyle == SecurityTokenReferenceStyle.External) { return((SecurityKeyIdentifierClause)null); } throw DiagnosticUtility.ExceptionUtility.ThrowHelperError((Exception) new ArgumentOutOfRangeException("tokenReferenceStyle")); }
public override SecurityKeyIdentifierClause CreateKeyIdentifierClauseFromTokenXmlCore(XmlElement issuedTokenXml, SecurityTokenReferenceStyle tokenReferenceStyle) { TokenReferenceStyleHelper.Validate(tokenReferenceStyle); switch (tokenReferenceStyle) { case SecurityTokenReferenceStyle.Internal: return(CreateDirectReference(issuedTokenXml, XmlEncryptionStrings.Id, null, null)); case SecurityTokenReferenceStyle.External: throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(string.Format(SRServiceModel.CantInferReferenceForToken, EncryptedKey.ElementName.Value))); default: throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("tokenReferenceStyle")); } }
public override SecurityKeyIdentifierClause CreateKeyIdentifierClauseFromTokenXmlCore(XmlElement issuedTokenXml, SecurityTokenReferenceStyle tokenReferenceStyle) { TokenReferenceStyleHelper.Validate(tokenReferenceStyle); switch (tokenReferenceStyle) { // SAML uses same reference for internal and external case SecurityTokenReferenceStyle.Internal: case SecurityTokenReferenceStyle.External: string assertionId = issuedTokenXml.GetAttribute(samlAssertionId); return(new SamlAssertionKeyIdentifierClause(assertionId)); default: throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("tokenReferenceStyle")); } }
public override SecurityKeyIdentifierClause CreateKeyIdentifierClauseFromTokenXmlCore(XmlElement issuedTokenXml, SecurityTokenReferenceStyle tokenReferenceStyle) { TokenReferenceStyleHelper.Validate(tokenReferenceStyle); switch (tokenReferenceStyle) { case SecurityTokenReferenceStyle.Internal: return(CreateDirectReference(issuedTokenXml, UtilityStrings.IdAttribute, UtilityStrings.Namespace, typeof(DerivedKeySecurityToken))); case SecurityTokenReferenceStyle.External: // DerivedKeys aren't referred to externally return(null); default: throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("tokenReferenceStyle")); } }