protected override void OnWriteStartEnvelope(XmlDictionaryWriter writer) { writer.WriteStartDocument(); writer.WriteStartElement("s", "Envelope", "http://schemas.xmlsoap.org/soap/envelope/"); writer.WriteAttributeString("xmlns:xsd", "http://www.w3.org/2001/XMLSchema"); writer.WriteAttributeString("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); }
/// <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(); }
public virtual void WriteXml(XmlDictionaryWriter writer, SamlSerializer samlSerializer, SecurityTokenSerializer keyInfoSerializer) { if (writer == null) { throw new ArgumentNullException("writer"); } if (samlSerializer == null) { throw new ArgumentNullException("samlSerializer"); } if (Name == null || Name.Length == 0) { throw new SecurityTokenException("non-zero length string must be set to Name of SAML Subject before being written."); } writer.WriteStartElement("saml", "Subject", SamlConstants.Namespace); writer.WriteStartElement("saml", "NameIdentifier", SamlConstants.Namespace); writer.WriteAttributeString("Format", NameFormat); writer.WriteAttributeString("NameQualifier", NameQualifier); writer.WriteString(Name); writer.WriteEndElement(); writer.WriteEndElement(); }
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); }
private void WriteValidationRulesMetadata(XmlDictionaryWriter writer) { // The rules section is optional. Unless we encounter validation rules, we won't write it. bool ruleSectionStarted = false; foreach (TypePropertyMetadata field in this.Properties) { if (field.ValidationRules.Any()) { if (!ruleSectionStarted) { ruleSectionStarted = true; writer.WriteStartElement(MetadataStrings.RulesString); writer.WriteAttributeString("type", "object"); } writer.WriteStartElement(field.Name); writer.WriteAttributeString("type", "object"); foreach (TypePropertyValidationRuleMetadata rule in field.ValidationRules) { rule.WriteJson(writer); } writer.WriteEndElement(); } } //Close the rules section if it was opened, and add error message if any. if (ruleSectionStarted) { writer.WriteEndElement(); this.WriteValidationErrorMessagesMetadata(writer); } }
private void WriteReason(XmlDictionaryWriter writer, EnvelopeVersion version) { if (version == EnvelopeVersion.Soap11) { foreach (FaultReasonText t in Reason.Translations) { writer.WriteStartElement("", "faultstring", String.Empty); if (t.XmlLang != null) { writer.WriteAttributeString("xml", "lang", null, t.XmlLang); } writer.WriteString(t.Text); writer.WriteEndElement(); } } else // Soap12 { writer.WriteStartElement("Reason", version.Namespace); foreach (FaultReasonText t in Reason.Translations) { writer.WriteStartElement("Text", version.Namespace); if (t.XmlLang != null) { writer.WriteAttributeString("xml", "lang", null, t.XmlLang); } writer.WriteString(t.Text); writer.WriteEndElement(); } writer.WriteEndElement(); } }
public override void WriteContent(XmlDictionaryWriter writer, SecurityKeyIdentifierClause clause) { writer.WriteStartElement(CoreWCF.XD.SecurityJan2004Dictionary.Prefix.Value, CoreWCF.XD.SecurityJan2004Dictionary.KeyIdentifier, CoreWCF.XD.SecurityJan2004Dictionary.Namespace); writer.WriteAttributeString(CoreWCF.XD.SecurityJan2004Dictionary.ValueType, null, ValueTypeUri); if (EmitBspRequiredAttributes) { // Emit the encodingType attribute. writer.WriteAttributeString(CoreWCF.XD.SecurityJan2004Dictionary.EncodingType, null, DefaultEncodingType); } string encoding = DefaultEncodingType; BinaryKeyIdentifierClause binaryClause = clause as BinaryKeyIdentifierClause; byte[] keyIdentifier = binaryClause.GetBuffer(); if (encoding == EncodingTypeValueBase64Binary) { writer.WriteBase64(keyIdentifier, 0, keyIdentifier.Length); } else if (encoding == EncodingTypeValueHexBinary) { writer.WriteBinHex(keyIdentifier, 0, keyIdentifier.Length); } else if (encoding == EncodingTypeValueText) { writer.WriteString(new UTF8Encoding().GetString(keyIdentifier, 0, keyIdentifier.Length)); } writer.WriteEndElement(); }
private void WriteHeader(XmlDictionaryWriter writer) { var nonce = new byte[64]; RandomNumberGenerator.Create().GetBytes(nonce); // string created = DateTime.Now.ToString("yyyy-MM-ddThh:mm:ssZ"); string created = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ"); writer.WriteStartElement("wsse", "UsernameToken", null); writer.WriteAttributeString("wsu:Id", "UsernameToken-1"); writer.WriteStartElement("wsse", "Username", null); writer.WriteString(SystemUser); writer.WriteEndElement();//End Username writer.WriteStartElement("wsse", "Password", null); writer.WriteAttributeString("Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"); writer.WriteString(ComputePasswordDigest(SystemPassword, nonce, created)); writer.WriteEndElement();//End Password writer.WriteStartElement("wsse", "Nonce", null); writer.WriteAttributeString("EncodingType", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"); writer.WriteBase64(nonce, 0, nonce.Length); writer.WriteEndElement();//End Nonce writer.WriteStartElement("wsu", "Created", null); writer.WriteString(created); writer.WriteEndElement(); //End Created writer.WriteEndElement(); //End UsernameToken writer.Flush(); var test = writer.ToString(); }
public virtual void WriteXml( XmlDictionaryWriter writer, SamlSerializer samlSerializer, SecurityTokenSerializer keyInfoSerializer) { if (writer == null) { throw new ArgumentNullException("writer"); } if (samlSerializer == null) { throw new ArgumentNullException("samlSerializer"); } if (AuthorityKind == null) { throw new SecurityTokenException("AuthorityKind must be set to SAML AuthorityBinding before being written."); } if (Binding == null) { throw new SecurityTokenException("non-zero length Binding must be set to SAML AuthorityBinding before being written."); } if (Location == null) { throw new SecurityTokenException("non-zero length Location must be set to SAML AuthorityBinding before being written."); } writer.WriteStartElement("saml", "AuthorityBinding", SamlConstants.Namespace); writer.WriteXmlnsAttribute(String.Empty, AuthorityKind.Namespace); writer.WriteAttributeString("AuthorityKind", AuthorityKind.Name); writer.WriteAttributeString("Location", Location); writer.WriteAttributeString("Binding", Binding); writer.WriteEndElement(); }
static void SerializePrimaryIdentity(IIdentity identity, SctClaimDictionary dictionary, XmlDictionaryWriter writer, XmlObjectSerializer serializer) { if (identity != null && identity != SecurityUtils.AnonymousIdentity) { writer.WriteStartElement(dictionary.PrimaryIdentity, dictionary.EmptyString); if (identity is WindowsIdentity) { WindowsIdentity wid = (WindowsIdentity)identity; writer.WriteStartElement(dictionary.WindowsSidIdentity, dictionary.EmptyString); WriteSidAttribute(wid.User, dictionary, writer); // This is to work around WOW64 bug Windows OS 1491447 string authenticationType = null; using (WindowsIdentity self = WindowsIdentity.GetCurrent()) { // is owner or admin? AuthenticationType could throw un-authorized exception if ((self.User == wid.Owner) || (wid.Owner != null && self.Groups.Contains(wid.Owner)) || (wid.Owner != SecurityUtils.AdministratorsSid && self.Groups.Contains(SecurityUtils.AdministratorsSid))) { authenticationType = wid.AuthenticationType; } } if (!String.IsNullOrEmpty(authenticationType)) { writer.WriteAttributeString(dictionary.AuthenticationType, dictionary.EmptyString, authenticationType); } writer.WriteString(wid.Name); writer.WriteEndElement(); } else if (identity is WindowsSidIdentity) { WindowsSidIdentity wsid = (WindowsSidIdentity)identity; writer.WriteStartElement(dictionary.WindowsSidIdentity, dictionary.EmptyString); WriteSidAttribute(wsid.SecurityIdentifier, dictionary, writer); if (!String.IsNullOrEmpty(wsid.AuthenticationType)) { writer.WriteAttributeString(dictionary.AuthenticationType, dictionary.EmptyString, wsid.AuthenticationType); } writer.WriteString(wsid.Name); writer.WriteEndElement(); } else if (identity is GenericIdentity) { GenericIdentity genericIdentity = (GenericIdentity)identity; writer.WriteStartElement(dictionary.GenericIdentity, dictionary.EmptyString); if (!String.IsNullOrEmpty(genericIdentity.AuthenticationType)) { writer.WriteAttributeString(dictionary.AuthenticationType, dictionary.EmptyString, genericIdentity.AuthenticationType); } writer.WriteString(genericIdentity.Name); writer.WriteEndElement(); } else { serializer.WriteObject(writer, identity); } writer.WriteEndElement(); } }
private void WriteHeader(XmlDictionaryWriter writer) { writer.WriteStartElement("wsu", "Timestamp", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"); writer.WriteAttributeString("wsu", "id", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", "Timestamp-6557466"); writer.WriteStartElement("wsu", "Created", XmlConvert.ToString(DateTime.Now, "yyyy-MM-ddTHH:mm:sszzzzzz")); writer.WriteEndElement(); //End Created writer.WriteStartElement("wsu", "Expires", XmlConvert.ToString(DateTime.Now.AddDays(1), "yyyy-MM-ddTHH:mm:sszzzzzz")); writer.WriteEndElement(); //End Expires writer.WriteEndElement(); //End Timestamp writer.WriteStartElement("wsse", "UsernameToken", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"); writer.WriteXmlnsAttribute("wsu", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"); writer.WriteStartElement("wsse", "Username", null); writer.WriteString(SystemUser); writer.WriteEndElement();//End Username writer.WriteStartElement("wsse", "Password", null); writer.WriteAttributeString("Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"); writer.WriteString(SystemPassword); writer.WriteEndElement(); //End Password writer.WriteEndElement(); //End UsernameToken writer.Flush(); }
protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion) { // Create the Nonce byte[] nonce = GenerateNonce(); // Create the Created Date string created = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); // Create the WSSE Security Header, starting with the Username Element writer.WriteStartElement("wsse", "UsernameToken", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"); writer.WriteXmlnsAttribute("wsu", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"); writer.WriteStartElement("wsse", "Username", null); writer.WriteString(Username); writer.WriteEndElement(); // Add the Password Element writer.WriteStartElement("wsse", "Password", null); writer.WriteAttributeString("Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"); writer.WriteString(GeneratePasswordDigest(nonce, created, Password)); writer.WriteEndElement(); // Add the Nonce Element writer.WriteStartElement("wsse", "Nonce", null); writer.WriteAttributeString("EncodingType", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"); writer.WriteBase64(nonce, 0, nonce.Length); writer.WriteEndElement(); // Lastly, add the Created Element writer.WriteStartElement("wsu", "Created", null); writer.WriteString(created); writer.WriteEndElement(); writer.WriteEndElement(); writer.Flush(); }
protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion) { writer.WriteStartElement("wsse", "UsernameToken", Namespace); writer.WriteAttributeString("Id", "UsernameToken-10"); writer.WriteAttributeString("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("wsse", "Created", Namespace); writer.WriteValue(_createdDate.ToString("YYYY-MM-DDThh:mm:ss")); writer.WriteEndElement(); writer.WriteEndElement(); }
public override void WriteTokenCore(XmlDictionaryWriter writer, SecurityToken token) { string id; byte[] rawData; WriteBinaryCore(token, out id, out rawData); if (rawData == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(rawData)); } writer.WriteStartElement(XD.SecurityJan2004Dictionary.Prefix.Value, ElementName, XD.SecurityJan2004Dictionary.Namespace); if (id != null) { writer.WriteAttributeString(XD.UtilityDictionary.Prefix.Value, XD.UtilityDictionary.IdAttribute, XD.UtilityDictionary.Namespace, id); } if (_valueTypeUris != null) { writer.WriteAttributeString(ValueTypeAttribute, null, _valueTypeUris[0]); } if (_tokenSerializer.EmitBspRequiredAttributes) { writer.WriteAttributeString(EncodingTypeAttribute, null, EncodingTypeValueBase64Binary); } writer.WriteBase64(rawData, 0, rawData.Length); writer.WriteEndElement(); // BinarySecurityToken }
protected override void OnWriteBodyContents(XmlDictionaryWriter writer) { XmlDictionaryReader reader = this.originalMessage.GetReaderAtBodyContents(); // Write root StartElement writer.WriteStartElement(reader.Prefix, reader.LocalName, reader.NamespaceURI); writer.WriteAttributes(reader, true); reader.ReadStartElement(); // Write QueryResult StartElement writer.WriteStartElement(reader.Prefix, reader.LocalName, reader.NamespaceURI); writer.WriteAttributes(reader, true); // Write QueryResult content string nodeName = reader.LocalName; reader.Read(); while (reader.NodeType != XmlNodeType.EndElement || reader.Name != nodeName) { XmlReader subtree = reader.ReadSubtree(); writer.WriteNode(subtree, false); reader.ReadEndElement(); } // Insert metadata start writer.WriteStartElement("Metadata"); writer.WriteAttributeString("type", "array"); // This two foreach loops are to ensure we write the return entity of the query first, then all the rest. // This is a requirement of the RIA/JS client side implementation. If modifying this, client side needs update too. foreach (ServiceMetadataGenerator.TypeMetadata map in ServiceMetadataGenerator.EntitiesMetadata) { if (map.Name == this.entityTypeName) { writer.WriteStartElement("item"); writer.WriteAttributeString("type", "object"); map.WriteJson(writer); writer.WriteEndElement(); break; } } foreach (ServiceMetadataGenerator.TypeMetadata map in ServiceMetadataGenerator.EntitiesMetadata) { if (map.Name != this.entityTypeName) { writer.WriteStartElement("item"); writer.WriteAttributeString("type", "object"); map.WriteJson(writer); writer.WriteEndElement(); } } writer.WriteEndElement(); // Insert metadata end // Close QueryResult writer.WriteEndElement(); // Close root writer.WriteEndElement(); }
private void WriteSerializationElement(XmlDictionaryWriter writer, string name, string type, bool nillable) { writer.WriteStartElement("xs:element"); writer.WriteAttributeString("name", name); writer.WriteAttributeString("nillable", nillable ? "true" : "false"); writer.WriteAttributeString("type", type); writer.WriteEndElement(); }
private void WriteTo11(XmlDictionaryWriter writer) { string name; string str2; writer.WriteStartElement(XD.MessageDictionary.Fault, XD.Message11Dictionary.Namespace); writer.WriteStartElement(XD.Message11Dictionary.FaultCode, XD.Message11Dictionary.FaultNamespace); FaultCode subCode = this.Code; if (subCode.SubCode != null) { subCode = subCode.SubCode; } if (subCode.IsSenderFault) { name = "Client"; } else if (subCode.IsReceiverFault) { name = "Server"; } else { name = subCode.Name; } if (subCode.IsPredefinedFault) { str2 = "http://schemas.xmlsoap.org/soap/envelope/"; } else { str2 = subCode.Namespace; } if (writer.LookupPrefix(str2) == null) { writer.WriteAttributeString("xmlns", "a", "http://www.w3.org/2000/xmlns/", str2); } writer.WriteQualifiedName(name, str2); writer.WriteEndElement(); FaultReasonText text = this.Reason.Translations[0]; writer.WriteStartElement(XD.Message11Dictionary.FaultString, XD.Message11Dictionary.FaultNamespace); if (text.XmlLang.Length > 0) { writer.WriteAttributeString("xml", "lang", "http://www.w3.org/XML/1998/namespace", text.XmlLang); } writer.WriteString(text.Text); writer.WriteEndElement(); if (this.Actor.Length > 0) { writer.WriteElementString(XD.Message11Dictionary.FaultActor, XD.Message11Dictionary.FaultNamespace, this.Actor); } if (this.HasDetail) { this.OnWriteDetail(writer, EnvelopeVersion.Soap11); } writer.WriteEndElement(); }
private static void SimulateWriteFragment(XmlDictionaryWriter writer, bool useFragmentAPI, int nestedLevelsLeft) { if (nestedLevelsLeft <= 0) { return; } Random rndGen = new Random(nestedLevelsLeft); int signatureLen = rndGen.Next(100, 200); byte[] signature = new byte[signatureLen]; rndGen.NextBytes(signature); MemoryStream fragmentStream = new MemoryStream(); if (!useFragmentAPI) // simulating in the writer itself { writer.WriteStartElement("SignatureValue_" + nestedLevelsLeft); writer.WriteBase64(signature, 0, signatureLen); writer.WriteEndElement(); } if (useFragmentAPI) { FragmentHelper.Start(writer, fragmentStream); } writer.WriteStartElement("Fragment" + nestedLevelsLeft); for (int i = 0; i < 5; i++) { writer.WriteStartElement(string.Format("Element{0}_{1}", nestedLevelsLeft, i)); writer.WriteAttributeString("attr1", "value1"); writer.WriteAttributeString("attr2", "value2"); } writer.WriteString("This is a text with unicode characters: <>&;\u0301\u2234"); for (int i = 0; i < 5; i++) { writer.WriteEndElement(); } // write other nested fragments... SimulateWriteFragment(writer, useFragmentAPI, nestedLevelsLeft - 1); writer.WriteEndElement(); // Fragment{nestedLevelsLeft} writer.Flush(); if (useFragmentAPI) { FragmentHelper.End(writer); writer.WriteStartElement("SignatureValue_" + nestedLevelsLeft); writer.WriteBase64(signature, 0, signatureLen); writer.WriteEndElement(); FragmentHelper.Write(writer, fragmentStream.GetBuffer(), 0, (int)fragmentStream.Length); writer.Flush(); } }
protected override void OnWriteStartEnvelope(XmlDictionaryWriter writer) { writer.WriteStartElement("s", "Envelope", "http://schemas.xmlsoap.org/soap/envelope/"); writer.WriteAttributeString("xmlns", "v2", null, "http://www.royalmailgroup.com/api/ship/V2"); writer.WriteAttributeString("xmlns", "v1", null, "http://www.royalmailgroup.com/integration/core/V1"); writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance"); writer.WriteAttributeString("xmlns", "xsd", null, "http://www.w3.org/2001/XMLSchema"); writer.WriteAttributeString("xmlns", "xsd", null, "http://www.w3.org/2001/XMLSchema"); }
/// <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); }
protected override void OnWriteStartEnvelope(XmlDictionaryWriter writer) { writer.WriteStartElement("soapenv", "Envelope", "http://schemas.xmlsoap.org/soap/envelope/"); writer.WriteAttributeString("xmlns", "oas", null, "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"); writer.WriteAttributeString("xmlns", "v2", null, "http://www.royalmailgroup.com/api/ship/V2"); writer.WriteAttributeString("xmlns", "v1", null, "http://www.royalmailgroup.com/integration/core/V1"); writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance"); writer.WriteAttributeString("xmlns", "xsd", null, "http://www.w3.org/2001/XMLSchema"); }
public override void WriteContent(XmlDictionaryWriter writer, SecurityKeyIdentifierClause clause) { RelAssertionDirectKeyIdentifierClause relClause = clause as RelAssertionDirectKeyIdentifierClause; writer.WriteStartElement(XD.SecurityJan2004Dictionary.Prefix.Value, XD.SecurityJan2004Dictionary.Reference, XD.SecurityJan2004Dictionary.Namespace); writer.WriteAttributeString(XD.SecurityJan2004Dictionary.ValueType, null, SecurityJan2004Strings.RelAssertionValueType); writer.WriteAttributeString(XD.SecurityJan2004Dictionary.URI, null, relClause.AssertionId); writer.WriteEndElement(); }
protected override void OnWriteStartEnvelope(XmlDictionaryWriter writer) { writer.WriteStartElement("wsdl", "definitions", "http://schemas.xmlsoap.org/wsdl/"); writer.WriteAttributeString("xmlns:xsd", "http://www.w3.org/2001/XMLSchema"); writer.WriteAttributeString("xmlns:soap", "http://schemas.xmlsoap.org/wsdl/soap/"); writer.WriteAttributeString("xmlns:tns", _service.Contracts.First().Namespace); writer.WriteAttributeString("targetNamespace", _service.Contracts.First().Namespace); writer.WriteAttributeString("name", _service.ServiceType.Name); }
public virtual void WriteXml(XmlDictionaryWriter writer, SamlSerializer samlSerializer, SecurityTokenSerializer keyInfoTokenSerializer) { if (writer == null) { throw new ArgumentNullException("writer"); } if (Issuer == null || Issuer.Length == 0) { throw new SecurityTokenException("Issuer must not be null or empty."); } if (Statements.Count == 0) { throw new SecurityTokenException("At least one assertion statement is required."); } if (samlSerializer == null) { throw new ArgumentNullException("samlSerializer"); } CultureInfo invariant = CultureInfo.InvariantCulture; writer.WriteStartElement("saml", "Assertion", SamlConstants.Namespace); writer.WriteAttributeString("MajorVersion", MajorVersion.ToString(invariant)); writer.WriteAttributeString("MinorVersion", MinorVersion.ToString(invariant)); writer.WriteAttributeString("AssertionID", AssertionId); writer.WriteAttributeString("Issuer", Issuer); writer.WriteAttributeString("IssueInstant", IssueInstant.ToString(SamlConstants.DateFormat, invariant)); try { if (Conditions != null) { Conditions.WriteXml(writer, samlSerializer, keyInfoTokenSerializer); } if (Advice != null) { Advice.WriteXml(writer, samlSerializer, keyInfoTokenSerializer); } foreach (SamlStatement statement in Statements) { statement.WriteXml(writer, samlSerializer, keyInfoTokenSerializer); } } catch (NotImplementedException) { throw; } catch (Exception ex) // bad catch, eh? { throw new InvalidOperationException("There is an error on writing assertion statements.", ex); } writer.WriteEndElement(); }
protected override void WriteBodyAttributes(XmlDictionaryWriter writer, MessageVersion version) { if (isEncoded && version.Envelope == EnvelopeVersion.Soap11) { string encoding = GetEncoding(version.Envelope); writer.WriteAttributeString("encodingStyle", version.Envelope.Namespace, encoding); } writer.WriteAttributeString("xmlns", "xsi", null, XmlSchema.InstanceNamespace); writer.WriteAttributeString("xmlns", "xsd", null, XmlSchema.Namespace); }
protected override void WriteBodyAttributes(XmlDictionaryWriter writer, MessageVersion version) { if (this.isEncoded && (version.Envelope == EnvelopeVersion.Soap11)) { string encoding = GetEncoding(version.Envelope); writer.WriteAttributeString("encodingStyle", version.Envelope.Namespace, encoding); } writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance"); writer.WriteAttributeString("xmlns", "xsd", null, "http://www.w3.org/2001/XMLSchema"); }
private void AddMessage(XmlDictionaryWriter writer) { foreach (var operation in _service.Operations) { // input writer.WriteStartElement("wsdl:message"); writer.WriteAttributeString("name", $"{BindingType}_{operation.Name}_InputMessage"); writer.WriteStartElement("wsdl:part"); writer.WriteAttributeString("name", "parameters"); writer.WriteAttributeString("element", "tns:" + operation.Name); writer.WriteEndElement(); // wsdl:part writer.WriteEndElement(); // wsdl:message // output writer.WriteStartElement("wsdl:message"); writer.WriteAttributeString("name", $"{BindingType}_{operation.Name}_OutputMessage"); writer.WriteStartElement("wsdl:part"); writer.WriteAttributeString("name", "parameters"); writer.WriteAttributeString("element", "tns:" + operation.Name + "Response"); writer.WriteEndElement(); // wsdl:part writer.WriteEndElement(); // wsdl:message foreach (var fault in operation.Faults) { writer.WriteStartElement("wsdl:message"); writer.WriteAttributeString("name", $"{BindingType}_{operation.Name}_{fault.Name}_FaultMessage"); writer.WriteStartElement("wsdl:part"); writer.WriteAttributeString("name", "detail"); writer.WriteAttributeString("element", $"tns:{fault.ElementName}"); writer.WriteEndElement(); writer.WriteEndElement(); } } }
private static void SerializePrimaryIdentity(IIdentity identity, SctClaimDictionary dictionary, XmlDictionaryWriter writer, XmlObjectSerializer serializer) { if ((identity != null) && (identity != System.ServiceModel.Security.SecurityUtils.AnonymousIdentity)) { writer.WriteStartElement(dictionary.PrimaryIdentity, dictionary.EmptyString); if (identity is WindowsIdentity) { WindowsIdentity identity2 = (WindowsIdentity)identity; writer.WriteStartElement(dictionary.WindowsSidIdentity, dictionary.EmptyString); WriteSidAttribute(identity2.User, dictionary, writer); string authenticationType = null; using (WindowsIdentity identity3 = WindowsIdentity.GetCurrent()) { if (((identity3.User == identity2.Owner) || ((identity2.Owner != null) && identity3.Groups.Contains(identity2.Owner))) || ((identity2.Owner != System.ServiceModel.Security.SecurityUtils.AdministratorsSid) && identity3.Groups.Contains(System.ServiceModel.Security.SecurityUtils.AdministratorsSid))) { authenticationType = identity2.AuthenticationType; } } if (!string.IsNullOrEmpty(authenticationType)) { writer.WriteAttributeString(dictionary.AuthenticationType, dictionary.EmptyString, authenticationType); } writer.WriteString(identity2.Name); writer.WriteEndElement(); } else if (identity is WindowsSidIdentity) { WindowsSidIdentity identity4 = (WindowsSidIdentity)identity; writer.WriteStartElement(dictionary.WindowsSidIdentity, dictionary.EmptyString); WriteSidAttribute(identity4.SecurityIdentifier, dictionary, writer); if (!string.IsNullOrEmpty(identity4.AuthenticationType)) { writer.WriteAttributeString(dictionary.AuthenticationType, dictionary.EmptyString, identity4.AuthenticationType); } writer.WriteString(identity4.Name); writer.WriteEndElement(); } else if (identity is GenericIdentity) { GenericIdentity identity5 = (GenericIdentity)identity; writer.WriteStartElement(dictionary.GenericIdentity, dictionary.EmptyString); if (!string.IsNullOrEmpty(identity5.AuthenticationType)) { writer.WriteAttributeString(dictionary.AuthenticationType, dictionary.EmptyString, identity5.AuthenticationType); } writer.WriteString(identity5.Name); writer.WriteEndElement(); } else { serializer.WriteObject(writer, identity); } writer.WriteEndElement(); } }
protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion) { writer.WriteAttributeString("xmlns", "wsse", null, "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"); writer.WriteStartElement("wsse:UsernameToken"); writer.WriteElementString("wsse:Username", m_sUserName); 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(m_sPassword); writer.WriteEndElement(); //wsse:Password writer.WriteEndElement(); //wsse:UsernameToken }
protected String GeneratePolicy() { using (MemoryStream stream = new MemoryStream()) { XmlDictionaryWriter writer = JsonReaderWriterFactory.CreateJsonWriter(stream); writer.WriteStartElement("root"); writer.WriteAttributeString("type", "object"); // Expiration date writer.WriteStartElement("expiration"); writer.WriteValue(DateTime.UtcNow.AddHours(3).ToString("yyyy-MM-ddTHH:00:00.000Z")); writer.WriteEndElement(); // Conditions writer.WriteStartElement("conditions"); writer.WriteAttributeString("type", "array"); // ACL WriteCondition(writer, "acl", "public-read"); // Bucket WriteCondition(writer, "bucket", _config["BucketName"]); // Cache-Control WriteCondition(writer, "Cache-Control", _config["CacheControl"]); // Content-Type condition WriteCondition(writer, "starts-with", "$Content-Type", String.Empty); // Key Condition WriteCondition(writer, "starts-with", "$key", VirtualPathUtility.AppendTrailingSlash(_config["Prefix"])); // success_action_redirect WriteCondition(writer, "success_action_redirect", SuccessRedirect); // x-amz-date WriteCondition(writer, "x-amz-date", Date); // x-amz-algorithm WriteCondition(writer, "x-amz-algorithm", "AWS4-HMAC-SHA256"); // x-amz-credential WriteCondition(writer, "x-amz-credential", Credential); writer.WriteEndElement(); writer.WriteEndElement(); writer.Flush(); // Return serialized JSON result return(Convert.ToBase64String(stream.ToArray())); } }
protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion) { writer.WriteRaw(GetToken().OuterXml); writer.WriteStartElement("Timestamp"); writer.WriteXmlnsAttribute("", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"); writer.WriteAttributeString("Id", "Timestamp-79"); //Created writer.WriteStartElement("Created"); writer.WriteString(this.token.ValidFrom.ToString("yyyy-MM-ddTHH:mm:ssZ")); writer.WriteEndElement(); //Expires writer.WriteStartElement("Expires"); writer.WriteString(this.token.ValidTo.ToString("yyyy-MM-ddTHH:mm:ssZ")); writer.WriteEndElement(); writer.WriteEndElement(); }