protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion) { var nonce = getNonce(); string nonceToSend = Convert.ToBase64String(Encoding.UTF8.GetBytes(nonce.ToString())); UserNameSecurityToken userToken; userToken = new UserNameSecurityToken(); IntPtr accountToken = WindowsIdentity.GetCurrent().Token; writer.WriteStartElement("wsse", "UsernameToken", Namespace); writer.WriteAttributeString("Id", userToken.Id.ToString()); //writer.WriteAttributeString("wsu", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"); writer.WriteStartElement("wsse", "Username", Namespace); writer.WriteValue(_username); writer.WriteEndElement(); writer.WriteStartElement("wsse", "Password", Namespace); writer.WriteAttributeString("Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"); writer.WriteValue(_password); writer.WriteEndElement(); writer.WriteStartElement("wsse", "Nonce", Namespace); writer.WriteAttributeString("EncodingType", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"); writer.WriteValue(_nonce); writer.WriteEndElement(); writer.WriteStartElement("wsse", "Created", Namespace); writer.WriteValue(_createdDate.ToString("YYYY-MM-DDThh:mm:ss")); writer.WriteEndElement(); writer.WriteEndElement(); }
protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion) { var nonce = GetNonce(); var created = DateTime.UtcNow.Add(time_shift).ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); var nonce_str = Convert.ToBase64String(nonce); string password_hash = PasswordDigest(nonce, created, password); writer.WriteStartElement("UsernameToken"); writer.WriteStartElement("Username"); writer.WriteValue(username); writer.WriteEndElement(); writer.WriteStartElement("Password"); writer.WriteAttributeString("Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"); writer.WriteValue(password_hash); writer.WriteEndElement(); writer.WriteStartElement("Nonce"); writer.WriteAttributeString("EncodingType", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"); writer.WriteValue(nonce_str); writer.WriteEndElement(); writer.WriteStartElement("Created"); writer.WriteXmlnsAttribute("", ns_wsu); writer.WriteValue(created); writer.WriteEndElement(); writer.WriteEndElement(); }
protected override void OnWriteBodyContents(XmlDictionaryWriter writer) { writer.WriteStartElement("Pull", "http://schemas.xmlsoap.org/ws/2004/09/enumeration"); if (this._enumerationContext != null) { writer.WriteElementString("EnumerationContext", "http://schemas.xmlsoap.org/ws/2004/09/enumeration", this._enumerationContext); } if (this._timeout.HasValue) { writer.WriteStartElement("MaxTime", "http://schemas.xmlsoap.org/ws/2004/09/enumeration"); writer.WriteValue(this._timeout.Value); writer.WriteEndElement(); } if (this._maxElements.HasValue) { writer.WriteStartElement("MaxElements", "http://schemas.xmlsoap.org/ws/2004/09/enumeration"); writer.WriteValue(this._maxElements.Value); writer.WriteEndElement(); } if (this._controls != null) { DirectoryControlSerializer.Serialize(writer, this._controls); } writer.WriteEndElement(); }
protected override void OnWriteBodyContents(XmlDictionaryWriter writer) { WsrmFeb2005Dictionary dictionary = XD.WsrmFeb2005Dictionary; XmlDictionaryString namespaceUri = WsrmIndex.GetNamespace(this.reliableMessagingVersion); writer.WriteStartElement(dictionary.CreateSequenceResponse, namespaceUri); writer.WriteStartElement(dictionary.Identifier, namespaceUri); writer.WriteValue(this.identifier); writer.WriteEndElement(); if (this.expires.HasValue) { writer.WriteStartElement(dictionary.Expires, namespaceUri); writer.WriteValue(this.expires.Value); writer.WriteEndElement(); } if (this.reliableMessagingVersion == ReliableMessagingVersion.WSReliableMessaging11) { Wsrm11Dictionary dictionary2 = DXD.Wsrm11Dictionary; writer.WriteStartElement(dictionary2.IncompleteSequenceBehavior, namespaceUri); writer.WriteValue(this.ordered ? dictionary2.DiscardFollowingFirstGap : dictionary2.NoDiscard); writer.WriteEndElement(); } if (this.acceptAcksTo != null) { writer.WriteStartElement(dictionary.Accept, namespaceUri); this.acceptAcksTo.WriteTo(this.addressingVersion, writer, dictionary.AcksTo, namespaceUri); writer.WriteEndElement(); } writer.WriteEndElement(); }
public static void WriteLinkItem(LinkItem linkItem, XmlDictionaryWriter xmlWriter) { /* What the contents of the link item look like... * * <b:Id>xs:int</b:Id> * <b:Title>xs:string</b:Title> * <b:Description>xs:string</b:Description> * <b:DateStart>xs:dateTime</b:DateStart> * <b:DateEnd>xs:dateTime</b:DateEnd> * <b:Url>xs:string</b:Url> */ xmlWriter.WriteStartElement("Id", ns); xmlWriter.WriteValue(linkItem.Id); xmlWriter.WriteEndElement(); xmlWriter.WriteElementString("Title", ns, linkItem.Title); xmlWriter.WriteElementString("Description", ns, linkItem.Description); xmlWriter.WriteStartElement("DateStart", ns); xmlWriter.WriteValue(linkItem.DateStart); xmlWriter.WriteEndElement(); xmlWriter.WriteStartElement("DateEnd", ns); xmlWriter.WriteValue(linkItem.DateEnd); xmlWriter.WriteEndElement(); xmlWriter.WriteElementString("Url", ns, linkItem.Url); }
protected override void OnWriteBodyContents(XmlDictionaryWriter writer) { WsrmFeb2005Dictionary dictionary = XD.WsrmFeb2005Dictionary; XmlDictionaryString namespaceUri = WsrmIndex.GetNamespace(this.reliableMessagingVersion); writer.WriteStartElement(dictionary.CreateSequence, namespaceUri); EndpointAddress localAddress = this.binder.LocalAddress; localAddress.WriteTo(this.addressingVersion, writer, dictionary.AcksTo, namespaceUri); if (this.offerIdentifier != null) { writer.WriteStartElement(dictionary.Offer, namespaceUri); writer.WriteStartElement(dictionary.Identifier, namespaceUri); writer.WriteValue(this.offerIdentifier); writer.WriteEndElement(); if (this.reliableMessagingVersion == ReliableMessagingVersion.WSReliableMessaging11) { Wsrm11Dictionary dictionary2 = DXD.Wsrm11Dictionary; localAddress.WriteTo(this.addressingVersion, writer, dictionary2.Endpoint, namespaceUri); writer.WriteStartElement(dictionary2.IncompleteSequenceBehavior, namespaceUri); writer.WriteValue(this.ordered ? dictionary2.DiscardFollowingFirstGap : dictionary2.NoDiscard); writer.WriteEndElement(); } writer.WriteEndElement(); } ISecureConversationSession innerSession = this.binder.GetInnerSession() as ISecureConversationSession; if (innerSession != null) { innerSession.WriteSessionTokenIdentifier(writer); } writer.WriteEndElement(); }
protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion) { string username = UserName; string password = PassWord; string nonce = GetNonce(); string created = GetCreated(); string digest = GetPasswordDigest(nonce, created, password); writer.WriteAttributeString("xmlns", "wsse", null, NAMESPACE_SECURITY_0); writer.WriteAttributeString("xmlns", "wsu", null, NAMESPACE_SECURITY_1); writer.WriteStartElement("wsse:UsernameToken"); writer.WriteStartElement("wsse:Username"); writer.WriteValue(username); writer.WriteEndElement(); writer.WriteStartElement("wsse:Password"); //少了这个Type属性,可能会报错 writer.WriteAttributeString("Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"); writer.WriteValue(digest); writer.WriteEndElement(); writer.WriteStartElement("wsse:Nonce"); writer.WriteValue(nonce); writer.WriteEndElement(); writer.WriteStartElement("wsu:Created"); writer.WriteValue(created); writer.WriteEndElement(); writer.WriteEndElement(); }
protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion) { writer.WriteStartElement("wsse", "UsernameToken", Namespace); writer.WriteAttributeString("wsu:Id", "UsernameToken-2"); writer.WriteAttributeString("xmlns:wsu", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"); writer.WriteStartElement("wsse", "Username", Namespace); writer.WriteValue(_username); writer.WriteEndElement(); writer.WriteStartElement("wsse", "Password", Namespace); writer.WriteAttributeString("Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"); writer.WriteValue(_password); writer.WriteEndElement(); writer.WriteStartElement("wsse", "Nonce", Namespace); writer.WriteAttributeString("EncodingType", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"); writer.WriteValue(_nonce); writer.WriteEndElement(); writer.WriteStartElement("wsu:Created"); writer.WriteValue(_createdDate); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndElement(); }
internal static void WriteAckRanges(XmlDictionaryWriter writer, ReliableMessagingVersion reliableMessagingVersion, UniqueId sequenceId, SequenceRangeCollection ranges) { WsrmFeb2005Dictionary dictionary = XD.WsrmFeb2005Dictionary; XmlDictionaryString namespaceUri = WsrmIndex.GetNamespace(reliableMessagingVersion); writer.WriteStartElement(dictionary.Identifier, namespaceUri); writer.WriteValue(sequenceId); writer.WriteEndElement(); if (ranges.Count == 0) { if (reliableMessagingVersion == ReliableMessagingVersion.WSReliableMessagingFebruary2005) { ranges = ranges.MergeWith((long)0L); } else if (reliableMessagingVersion == ReliableMessagingVersion.WSReliableMessaging11) { writer.WriteStartElement(DXD.Wsrm11Dictionary.None, namespaceUri); writer.WriteEndElement(); } } for (int i = 0; i < ranges.Count; i++) { writer.WriteStartElement(dictionary.AcknowledgementRange, namespaceUri); writer.WriteStartAttribute(dictionary.Lower, null); SequenceRange range = ranges[i]; writer.WriteValue(range.Lower); writer.WriteEndAttribute(); writer.WriteStartAttribute(dictionary.Upper, null); SequenceRange range2 = ranges[i]; writer.WriteValue(range2.Upper); writer.WriteEndAttribute(); writer.WriteEndElement(); } }
protected override void OnWriteAddressHeaderContents(XmlDictionaryWriter writer) { writer.WriteStartElement(XD.DotNetAtomicTransactionExternalDictionary.LocalTransactionId, XD.DotNetAtomicTransactionExternalDictionary.Namespace); writer.WriteValue(this.transactionId); writer.WriteEndElement(); if (this.contextId != null) { writer.WriteStartElement(XD.DotNetAtomicTransactionExternalDictionary.ContextId, XD.DotNetAtomicTransactionExternalDictionary.Namespace); writer.WriteValue(this.contextId); writer.WriteEndElement(); } if (this.tokenId != null) { writer.WriteStartElement(XD.DotNetAtomicTransactionExternalDictionary.TokenId, XD.DotNetAtomicTransactionExternalDictionary.Namespace); writer.WriteValue(this.tokenId); writer.WriteEndElement(); } }
public override void WriteTokenCore(XmlDictionaryWriter writer, SecurityToken token) { DerivedKeySecurityToken derivedKeyToken = token as DerivedKeySecurityToken; string serializerPrefix = parent.SerializerDictionary.Prefix.Value; writer.WriteStartElement(serializerPrefix, parent.SerializerDictionary.DerivedKeyToken, parent.SerializerDictionary.Namespace); if (derivedKeyToken.Id != null) { writer.WriteAttributeString(CoreWCF.XD.UtilityDictionary.Prefix.Value, CoreWCF.XD.UtilityDictionary.IdAttribute, CoreWCF.XD.UtilityDictionary.Namespace, derivedKeyToken.Id); } if (derivedKeyToken.KeyDerivationAlgorithm != parent.DerivationAlgorithm) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.Format(SR.UnsupportedKeyDerivationAlgorithm, derivedKeyToken.KeyDerivationAlgorithm))); } parent.WSSecurityTokenSerializer.WriteKeyIdentifierClause(writer, derivedKeyToken.TokenToDeriveIdentifier); // Don't support Properties element if (derivedKeyToken.Generation > 0 || derivedKeyToken.Offset > 0 || derivedKeyToken.Length != 32) { // this means they're both specified (offset must be gen * length) - we'll write generation if (derivedKeyToken.Generation >= 0 && derivedKeyToken.Offset >= 0) { writer.WriteStartElement(serializerPrefix, parent.SerializerDictionary.Generation, parent.SerializerDictionary.Namespace); writer.WriteValue(derivedKeyToken.Generation); writer.WriteEndElement(); } else if (derivedKeyToken.Generation != -1) { writer.WriteStartElement(serializerPrefix, parent.SerializerDictionary.Generation, parent.SerializerDictionary.Namespace); writer.WriteValue(derivedKeyToken.Generation); writer.WriteEndElement(); } else if (derivedKeyToken.Offset != -1) { writer.WriteStartElement(serializerPrefix, parent.SerializerDictionary.Offset, parent.SerializerDictionary.Namespace); writer.WriteValue(derivedKeyToken.Offset); writer.WriteEndElement(); } if (derivedKeyToken.Length != 32) { writer.WriteStartElement(serializerPrefix, parent.SerializerDictionary.Length, parent.SerializerDictionary.Namespace); writer.WriteValue(derivedKeyToken.Length); writer.WriteEndElement(); } } if (derivedKeyToken.Label != null) { writer.WriteStartElement(serializerPrefix, parent.SerializerDictionary.Generation, parent.SerializerDictionary.Namespace); writer.WriteString(derivedKeyToken.Label); writer.WriteEndElement(); } writer.WriteStartElement(serializerPrefix, parent.SerializerDictionary.Nonce, parent.SerializerDictionary.Namespace); writer.WriteBase64(derivedKeyToken.Nonce, 0, derivedKeyToken.Nonce.Length); writer.WriteEndElement(); writer.WriteEndElement(); }
protected override void OnWriteAddressHeaderContents(XmlDictionaryWriter writer) { if (this.protocol != ControlProtocol.None) { writer.WriteStartAttribute(XD.DotNetAtomicTransactionExternalDictionary.Protocol, XD.DotNetAtomicTransactionExternalDictionary.Namespace); writer.WriteValue((int)this.protocol); writer.WriteEndAttribute(); } writer.WriteValue(this.enlistment); }
public override void WriteTokenCore(XmlDictionaryWriter writer, SecurityToken token) { DerivedKeySecurityToken keySecurityToken = token as DerivedKeySecurityToken; string prefix = this.parent.SerializerDictionary.Prefix.Value; writer.WriteStartElement(prefix, this.parent.SerializerDictionary.DerivedKeyToken, this.parent.SerializerDictionary.Namespace); if (keySecurityToken.Id != null) { writer.WriteAttributeString(XD.UtilityDictionary.Prefix.Value, XD.UtilityDictionary.IdAttribute, XD.UtilityDictionary.Namespace, keySecurityToken.Id); } if (keySecurityToken.KeyDerivationAlgorithm != this.parent.DerivationAlgorithm) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError((Exception) new MessageSecurityException(SR.GetString("UnsupportedKeyDerivationAlgorithm", new object[1] { (object)keySecurityToken.KeyDerivationAlgorithm }))); } this.parent.WSSecurityTokenSerializer.WriteKeyIdentifierClause((XmlWriter)writer, keySecurityToken.TokenToDeriveIdentifier); if (keySecurityToken.Generation > 0 || keySecurityToken.Offset > 0 || keySecurityToken.Length != 32) { if (keySecurityToken.Generation >= 0 && keySecurityToken.Offset >= 0) { writer.WriteStartElement(prefix, this.parent.SerializerDictionary.Generation, this.parent.SerializerDictionary.Namespace); writer.WriteValue(keySecurityToken.Generation); writer.WriteEndElement(); } else if (keySecurityToken.Generation != -1) { writer.WriteStartElement(prefix, this.parent.SerializerDictionary.Generation, this.parent.SerializerDictionary.Namespace); writer.WriteValue(keySecurityToken.Generation); writer.WriteEndElement(); } else if (keySecurityToken.Offset != -1) { writer.WriteStartElement(prefix, this.parent.SerializerDictionary.Offset, this.parent.SerializerDictionary.Namespace); writer.WriteValue(keySecurityToken.Offset); writer.WriteEndElement(); } if (keySecurityToken.Length != 32) { writer.WriteStartElement(prefix, this.parent.SerializerDictionary.Length, this.parent.SerializerDictionary.Namespace); writer.WriteValue(keySecurityToken.Length); writer.WriteEndElement(); } } if (keySecurityToken.Label != null) { writer.WriteStartElement(prefix, this.parent.SerializerDictionary.Generation, this.parent.SerializerDictionary.Namespace); writer.WriteString(keySecurityToken.Label); writer.WriteEndElement(); } writer.WriteStartElement(prefix, this.parent.SerializerDictionary.Nonce, this.parent.SerializerDictionary.Namespace); writer.WriteBase64(keySecurityToken.Nonce, 0, keySecurityToken.Nonce.Length); writer.WriteEndElement(); writer.WriteEndElement(); }
public virtual void WriteXml(XmlDictionaryWriter writer, SamlSerializer samlSerializer, SecurityTokenSerializer keyInfoSerializer) { this.CheckObjectValidity(); if (writer == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("writer"); } if (samlSerializer == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("samlSerializer")); } SamlDictionary samlDictionary = samlSerializer.DictionaryManager.SamlDictionary; try { writer.WriteStartElement(samlDictionary.PreferredPrefix.Value, samlDictionary.Assertion, samlDictionary.Namespace); writer.WriteStartAttribute(samlDictionary.MajorVersion, null); writer.WriteValue(SamlConstants.MajorVersionValue); writer.WriteEndAttribute(); writer.WriteStartAttribute(samlDictionary.MinorVersion, null); writer.WriteValue(SamlConstants.MinorVersionValue); writer.WriteEndAttribute(); writer.WriteStartAttribute(samlDictionary.AssertionId, null); writer.WriteString(this.assertionId); writer.WriteEndAttribute(); writer.WriteStartAttribute(samlDictionary.Issuer, null); writer.WriteString(this.issuer); writer.WriteEndAttribute(); writer.WriteStartAttribute(samlDictionary.IssueInstant, null); writer.WriteString(this.issueInstant.ToString("yyyy-MM-ddTHH:mm:ss.fffZ", CultureInfo.InvariantCulture)); writer.WriteEndAttribute(); if (this.conditions != null) { this.conditions.WriteXml(writer, samlSerializer, keyInfoSerializer); } if (this.advice != null) { this.advice.WriteXml(writer, samlSerializer, keyInfoSerializer); } for (int i = 0; i < this.statements.Count; i++) { this.statements[i].WriteXml(writer, samlSerializer, keyInfoSerializer); } writer.WriteEndElement(); } catch (Exception exception) { if (Fx.IsFatal(exception)) { throw; } throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(System.IdentityModel.SR.GetString("SAMLTokenNotSerialized"), exception)); } }
public override void WriteTokenCore(XmlDictionaryWriter writer, SecurityToken token) { DerivedKeySecurityToken token2 = token as DerivedKeySecurityToken; string prefix = this.parent.SerializerDictionary.Prefix.Value; writer.WriteStartElement(prefix, this.parent.SerializerDictionary.DerivedKeyToken, this.parent.SerializerDictionary.Namespace); if (token2.Id != null) { writer.WriteAttributeString(XD.UtilityDictionary.Prefix.Value, XD.UtilityDictionary.IdAttribute, XD.UtilityDictionary.Namespace, token2.Id); } if (token2.KeyDerivationAlgorithm != this.parent.DerivationAlgorithm) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(System.ServiceModel.SR.GetString("UnsupportedKeyDerivationAlgorithm", new object[] { token2.KeyDerivationAlgorithm }))); } this.parent.WSSecurityTokenSerializer.WriteKeyIdentifierClause(writer, token2.TokenToDeriveIdentifier); if (((token2.Generation > 0) || (token2.Offset > 0)) || (token2.Length != 0x20)) { if ((token2.Generation >= 0) && (token2.Offset >= 0)) { writer.WriteStartElement(prefix, this.parent.SerializerDictionary.Generation, this.parent.SerializerDictionary.Namespace); writer.WriteValue(token2.Generation); writer.WriteEndElement(); } else if (token2.Generation != -1) { writer.WriteStartElement(prefix, this.parent.SerializerDictionary.Generation, this.parent.SerializerDictionary.Namespace); writer.WriteValue(token2.Generation); writer.WriteEndElement(); } else if (token2.Offset != -1) { writer.WriteStartElement(prefix, this.parent.SerializerDictionary.Offset, this.parent.SerializerDictionary.Namespace); writer.WriteValue(token2.Offset); writer.WriteEndElement(); } if (token2.Length != 0x20) { writer.WriteStartElement(prefix, this.parent.SerializerDictionary.Length, this.parent.SerializerDictionary.Namespace); writer.WriteValue(token2.Length); writer.WriteEndElement(); } } if (token2.Label != null) { writer.WriteStartElement(prefix, this.parent.SerializerDictionary.Generation, this.parent.SerializerDictionary.Namespace); writer.WriteString(token2.Label); writer.WriteEndElement(); } writer.WriteStartElement(prefix, this.parent.SerializerDictionary.Nonce, this.parent.SerializerDictionary.Namespace); writer.WriteBase64(token2.Nonce, 0, token2.Nonce.Length); writer.WriteEndElement(); writer.WriteEndElement(); }
protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion) { writer.WriteStartElement("wsse", "UsernameToken", Namespace); writer.WriteStartElement("wsse", "Username", Namespace); writer.WriteValue(_username); writer.WriteEndElement(); writer.WriteStartElement("wsse", "Password", Namespace); writer.WriteValue(_password); writer.WriteEndElement(); writer.WriteEndElement(); }
public void GetObjectData(SerializationInfo info, StreamingContext context) { info.SetType(typeof(SessionSecurityToken)); MemoryStream stream = new MemoryStream(); using (XmlDictionaryWriter xmlDictionaryWriter = XmlDictionaryWriter.CreateBinaryWriter(stream, null, null)) { xmlDictionaryWriter.WriteStartElement("SecurityContextToken", ""); xmlDictionaryWriter.WriteStartElement("Version", ""); xmlDictionaryWriter.WriteValue("1"); xmlDictionaryWriter.WriteEndElement(); xmlDictionaryWriter.WriteElementString("SecureConversationVersion", "", (new Uri("http://schemas.xmlsoap.org/ws/2005/02/sc")).AbsoluteUri); xmlDictionaryWriter.WriteElementString("Id", "", "1"); WriteElementStringAsUniqueId(xmlDictionaryWriter, "ContextId", "", "1"); xmlDictionaryWriter.WriteStartElement("Key", ""); xmlDictionaryWriter.WriteBase64(new byte[] { 0x01 }, 0, 1); xmlDictionaryWriter.WriteEndElement(); WriteElementContentAsInt64(xmlDictionaryWriter, "EffectiveTime", "", 1); WriteElementContentAsInt64(xmlDictionaryWriter, "ExpiryTime", "", 1); WriteElementContentAsInt64(xmlDictionaryWriter, "KeyEffectiveTime", "", 1); WriteElementContentAsInt64(xmlDictionaryWriter, "KeyExpiryTime", "", 1); xmlDictionaryWriter.WriteStartElement("ClaimsPrincipal", ""); xmlDictionaryWriter.WriteStartElement("Identities", ""); xmlDictionaryWriter.WriteStartElement("Identity", ""); xmlDictionaryWriter.WriteStartElement("BootStrapToken", ""); xmlDictionaryWriter.WriteValue(B64Payload); // This is where the payload is xmlDictionaryWriter.WriteEndElement(); xmlDictionaryWriter.WriteEndElement(); xmlDictionaryWriter.WriteEndElement(); xmlDictionaryWriter.WriteEndElement(); xmlDictionaryWriter.WriteEndElement(); xmlDictionaryWriter.Flush(); stream.Position = 0; //Console.WriteLine(Encoding.ASCII.GetString(stream.ToArray())); info.AddValue("SessionToken", stream.ToArray()); } }
public static void SerializeExpires(XmlDictionaryWriter writer, DateTime?dateTimeFormat, TimeSpan?timeSpanFormat) { if (dateTimeFormat.HasValue || timeSpanFormat.HasValue) { writer.WriteStartElement("Expires", "http://schemas.xmlsoap.org/ws/2004/09/enumeration"); if (!dateTimeFormat.HasValue) { writer.WriteValue(XmlConvert.ToString(timeSpanFormat.Value)); } else { writer.WriteValue(XmlConvert.ToString(dateTimeFormat.Value, XmlDateTimeSerializationMode.Utc)); } writer.WriteEndElement(); } }
/// <summary> /// Called when the header content is serialized using the specified XML writer. /// </summary> /// <param name="writer">An <see cref="T:System.Xml.XmlDictionaryWriter" />.</param> /// <param name="messageVersion">Contains information related to the version of SOAP associated with a message and its exchange.</param> /// <exception cref="System.ArgumentNullException"></exception> protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion) { if (writer == null) { throw new ArgumentNullException("writer"); } //TimeStamp Header writer.WriteStartElement(WSUtilityPrefix, TimeStamp, WSUtilityNamespace); writer.WriteAttributeString(WSUtilityPrefix, IdAttributeName, WSUtilityNamespace, "Timestamp-" + this.GUID.ToString()); writer.WriteElementString(CreatedElementName, WSUtilityNamespace, Created); writer.WriteElementString(ExpiresElementName, WSUtilityNamespace, Expires); writer.WriteEndElement(); //UserNameToken Header writer.WriteStartElement(UsernameTokenPrefix, UsernameTokenName, UsernameTokenNamespace); writer.WriteAttributeString(WSUtilityPrefix, IdAttributeName, WSUtilityNamespace, "SecurityToken-" + this.GUID.ToString()); writer.WriteElementString(UsernameElementName, UsernameTokenNamespace, this.UserName); writer.WriteStartElement(UsernameTokenPrefix, PasswordElementName, UsernameTokenNamespace); writer.WriteAttributeString(TypeAttributeName, PasswordDigestType); writer.WriteValue(PasswordDigest); writer.WriteEndElement(); writer.WriteElementString(NonceElementName, UsernameTokenNamespace, Nonce); writer.WriteElementString(CreatedElementName, WSUtilityNamespace, Created); writer.WriteEndElement(); }
protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion) { writer.WriteStartElement("wsse", "UsernameToken", Namespace); writer.WriteAttributeString("wsu", "Id", WsuNamespace, Guid.NewGuid().ToString()); writer.WriteStartElement("wsse", "Username", Namespace); writer.WriteValue(_username); writer.WriteEndElement(); writer.WriteStartElement("wsse", "Password", Namespace); writer.WriteAttributeString("Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"); writer.WriteValue(_password); writer.WriteEndElement(); writer.WriteEndElement(); }
internal void Serialize(XmlDictionaryWriter writer, object[] parameters, object returnValue) { Stream streamValue = GetStreamAndWriteStartWrapperIfNecessary(writer, parameters, returnValue); writer.WriteValue(new OperationStreamProvider(streamValue)); WriteEndWrapperIfNecessary(writer); }
public void WriteXml(XmlWriter writer) { writer.WriteStartElement("name"); writer.WriteValue(this.name); writer.WriteEndElement(); writer.WriteStartElement("extension"); writer.WriteValue(this.extension); writer.WriteEndElement(); writer.WriteStartElement("data"); XmlDictionaryWriter dictWriter = writer as XmlDictionaryWriter; bool isMtom = dictWriter != null && dictWriter is IXmlMtomWriterInitializer; if (isMtom) { dictWriter.WriteValue(new MyStreamProvider(this.stream)); } else { // fall back to the original behavior byte[] buffer = new byte[1000]; int bytesRead; do { bytesRead = this.stream.Read(buffer, 0, buffer.Length); if (bytesRead > 0) { writer.WriteBase64(buffer, 0, bytesRead); } } while (bytesRead > 0); } writer.WriteEndElement(); }
protected void WriteClearTextPassword(XmlDictionaryWriter writer) { writer.WriteStartElement("wsse:Password"); writer.WriteAttributeString("Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"); writer.WriteValue(Password); writer.WriteEndElement(); //wsse:Password }
public void WriteJson(XmlDictionaryWriter writer) { writer.WriteStartElement(MetadataStrings.TypeString); writer.WriteAttributeString("type", "string"); writer.WriteString(String.Format("{0}{1}{2}", this.TypeName, MetadataStrings.NamespaceMarker, this.TypeNamespace)); writer.WriteEndElement(); writer.WriteStartElement(MetadataStrings.KeyString); writer.WriteAttributeString("type", "array"); foreach (string keyitem in this.Key) { writer.WriteStartElement("item"); writer.WriteAttributeString("type", "string"); writer.WriteValue(keyitem); writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteStartElement(MetadataStrings.FieldsString); writer.WriteAttributeString("type", "object"); foreach (TypePropertyMetadata field in this.Properties) { field.WriteJson(writer); } writer.WriteEndElement(); this.WriteValidationRulesMetadata(writer); }
public void WriteJson(XmlDictionaryWriter writer) { writer.WriteStartElement(MetadataStrings.NameString); writer.WriteAttributeString("type", "string"); writer.WriteString(this.Name); writer.WriteEndElement(); writer.WriteStartElement(MetadataStrings.ThisKeyString); writer.WriteAttributeString("type", "array"); foreach (string thisKey in this.ThisKeyMembers) { writer.WriteStartElement("item"); writer.WriteAttributeString("type", "string"); writer.WriteString(thisKey); writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteStartElement(MetadataStrings.OtherKeyString); writer.WriteAttributeString("type", "array"); foreach (string otherKey in this.OtherKeyMembers) { writer.WriteStartElement("item"); writer.WriteAttributeString("type", "string"); writer.WriteString(otherKey); writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteStartElement(MetadataStrings.IsForeignKey); writer.WriteAttributeString("type", "boolean"); writer.WriteValue(this.IsForeignKey); writer.WriteEndElement(); }
protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion) { WsrmFeb2005Dictionary dictionary = XD.WsrmFeb2005Dictionary; XmlDictionaryString dictionaryNamespace = this.DictionaryNamespace; writer.WriteStartElement(dictionary.Identifier, dictionaryNamespace); writer.WriteValue(this.sequenceID); writer.WriteEndElement(); writer.WriteStartElement(dictionary.MessageNumber, dictionaryNamespace); writer.WriteValue(this.sequenceNumber); writer.WriteEndElement(); if ((base.ReliableMessagingVersion == ReliableMessagingVersion.WSReliableMessagingFebruary2005) && this.lastMessage) { writer.WriteStartElement(dictionary.LastMessage, dictionaryNamespace); writer.WriteEndElement(); } }
protected override void OnWriteBodyContents(XmlDictionaryWriter writer) { WsrmFeb2005Dictionary dictionary = XD.WsrmFeb2005Dictionary; XmlDictionaryString namespaceUri = WsrmIndex.GetNamespace(this.reliableMessagingVersion); writer.WriteStartElement(dictionary.TerminateSequence, namespaceUri); writer.WriteStartElement(dictionary.Identifier, namespaceUri); writer.WriteValue(this.identifier); writer.WriteEndElement(); if ((this.reliableMessagingVersion == ReliableMessagingVersion.WSReliableMessaging11) && (this.lastMsgNumber > 0L)) { writer.WriteStartElement(DXD.Wsrm11Dictionary.LastMsgNumber, namespaceUri); writer.WriteValue(this.lastMsgNumber); writer.WriteEndElement(); } writer.WriteEndElement(); }
public byte[] CreateCookieFromSecurityContext(UniqueId contextId, string id, byte[] key, DateTime tokenEffectiveTime, DateTime tokenExpirationTime, UniqueId keyGeneration, DateTime keyEffectiveTime, DateTime keyExpirationTime, ReadOnlyCollection <IAuthorizationPolicy> authorizationPolicies) { if (contextId == null) { throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("contextId"); } if (key == null) { throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("key"); } MemoryStream stream = new MemoryStream(); XmlDictionaryWriter writer = XmlDictionaryWriter.CreateBinaryWriter(stream, SctClaimDictionary.Instance, null); SctClaimDictionary instance = SctClaimDictionary.Instance; writer.WriteStartElement(instance.SecurityContextSecurityToken, instance.EmptyString); writer.WriteStartElement(instance.Version, instance.EmptyString); writer.WriteValue(1); writer.WriteEndElement(); if (id != null) { writer.WriteElementString(instance.Id, instance.EmptyString, id); } XmlHelper.WriteElementStringAsUniqueId(writer, instance.ContextId, instance.EmptyString, contextId); writer.WriteStartElement(instance.Key, instance.EmptyString); writer.WriteBase64(key, 0, key.Length); writer.WriteEndElement(); if (keyGeneration != null) { XmlHelper.WriteElementStringAsUniqueId(writer, instance.KeyGeneration, instance.EmptyString, keyGeneration); } XmlHelper.WriteElementContentAsInt64(writer, instance.EffectiveTime, instance.EmptyString, tokenEffectiveTime.ToUniversalTime().Ticks); XmlHelper.WriteElementContentAsInt64(writer, instance.ExpiryTime, instance.EmptyString, tokenExpirationTime.ToUniversalTime().Ticks); XmlHelper.WriteElementContentAsInt64(writer, instance.KeyEffectiveTime, instance.EmptyString, keyEffectiveTime.ToUniversalTime().Ticks); XmlHelper.WriteElementContentAsInt64(writer, instance.KeyExpiryTime, instance.EmptyString, keyExpirationTime.ToUniversalTime().Ticks); AuthorizationContext authContext = null; if (authorizationPolicies != null) { authContext = AuthorizationContext.CreateDefaultAuthorizationContext(authorizationPolicies); } if ((authContext != null) && (authContext.ClaimSets.Count != 0)) { DataContractSerializer serializer = DataContractSerializerDefaults.CreateSerializer(typeof(IIdentity), this.knownTypes, 0x7fffffff); DataContractSerializer serializer2 = DataContractSerializerDefaults.CreateSerializer(typeof(ClaimSet), this.knownTypes, 0x7fffffff); DataContractSerializer claimSerializer = DataContractSerializerDefaults.CreateSerializer(typeof(Claim), this.knownTypes, 0x7fffffff); SctClaimSerializer.SerializeIdentities(authContext, instance, writer, serializer); writer.WriteStartElement(instance.ClaimSets, instance.EmptyString); for (int i = 0; i < authContext.ClaimSets.Count; i++) { SctClaimSerializer.SerializeClaimSet(authContext.ClaimSets[i], instance, writer, serializer2, claimSerializer); } writer.WriteEndElement(); } writer.WriteEndElement(); writer.Flush(); byte[] data = stream.ToArray(); return(this.securityStateEncoder.EncodeSecurityState(data)); }
private static void WriteCondition(XmlDictionaryWriter writer, String name, String value) { writer.WriteStartElement("item"); writer.WriteAttributeString("type", "object"); writer.WriteStartElement(name); writer.WriteValue(value); writer.WriteEndElement(); writer.WriteEndElement(); }
/// <summary> /// Writes header /// </summary> /// <param name="writer"></param> /// <param name="messageVersion"></param> protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion) { writer.WriteAttributeString("IsReferenceParameter", "http://www.w3.org/2005/08/addressing", "true"); foreach (XmlAttribute attr in _element.Attributes) { writer.WriteAttributeString(attr.LocalName, attr.NamespaceURI, attr.Value); } writer.WriteValue(_element.InnerXml); }