public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel)
    {
        // Use the WSE 3.0 security token class
        var option = PasswordOption.SendHashed;

        if (string.IsNullOrEmpty(Username) || string.IsNullOrEmpty(Password))
        {
            option = PasswordOption.SendPlainText;
        }
        UsernameToken token = new UsernameToken(this.Username, this.Password, option);
        // Serialize the token to XML
        XmlDocument xmlDoc        = new XmlDocument();
        XmlElement  securityToken = token.GetXml(xmlDoc);
        // find nonce and add EncodingType attribute for BSP compliance
        XmlNamespaceManager nsMgr = new XmlNamespaceManager(xmlDoc.NameTable);

        nsMgr.AddNamespace("wsse", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
        XmlNodeList  nonces       = securityToken.SelectNodes("//wsse:Nonce", nsMgr);
        XmlAttribute encodingAttr = xmlDoc.CreateAttribute("EncodingType");

        encodingAttr.Value = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary";
        if (nonces.Count > 0)
        {
            nonces[0].Attributes.Append(encodingAttr);
            //nonces[0].Attributes[0].Value = "foo";
        }
        //
        MessageHeader securityHeader = MessageHeader.CreateHeader("Security", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", securityToken, false);

        request.Headers.Add(securityHeader);
        // complete
        return(Convert.DBNull);
    }
예제 #2
0
        public object BeforeSendRequest(ref Message request, System.ServiceModel.IClientChannel channel)
        {
            UsernameToken token = new UsernameToken(Username, Password, PasswordOption.SendPlainText);

            XmlElement securityToken = token.GetXml(new XmlDocument());

            // Modificamos el XML Generado.
            // var nodo = securityToken.GetElementsByTagName("wsse:Nonce").Item(0);
            //nodo?.RemoveAll();

            MessageHeader securityHeader = MessageHeader.CreateHeader("Security",
                                                                      "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",
                                                                      securityToken, false);

            request.Headers.Add(securityHeader);

            MessageBuffer buffer = request.CreateBufferedCopy(Int32.MaxValue);

            request = buffer.CreateMessage();
            try
            {
                System.IO.File.WriteAllText(@"c:\temp\" + DateTime.Now.ToString("MMddyyyyhhmmssfff") + ".xml", request.ToString());
            }
            catch { }



            return(Convert.DBNull);
        }
        public object BeforeSendRequest(ref Message request, System.ServiceModel.IClientChannel channel)
        {
            UsernameToken token = new UsernameToken(this.Username, this.Password, PasswordOption.SendHashed);

            XmlElement securityToken = token.GetXml(new XmlDocument());

            MessageHeader securityHeader = MessageHeader.CreateHeader("Security", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", securityToken, false);

            request.Headers.Add(securityHeader);

            return(Convert.DBNull);
        }
예제 #4
0
        public object BeforeSendRequest(ref Message request, IClientChannel channel)
        {
            // Use the WSE 3.0 security token class
            UsernameToken token = new UsernameToken(_username, _password, PasswordOption.SendHashed);

            // Serialize the token to XML
            XmlElement securityToken = token.GetXml(new XmlDocument());

            //
            MessageHeader securityHeader = MessageHeader.CreateHeader("Security", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", securityToken, false);

            request.Headers.Add(securityHeader);

            // complete
            return(Convert.DBNull);
        }
예제 #5
0
        public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel)
        {
            // Use a custom security token class (from Microsoft.ServiceModel.Samples.CustomToken)
            UsernameToken token = new UsernameToken(new UsernameInfo(Username, Password), DeviceTimeOffset);

            // Serialize the token to XML
            XmlElement securityToken = token.GetXml(new XmlDocument());

            // Add header to the request
            MessageHeader securityHeader = MessageHeader.CreateHeader("Security", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", securityToken, mustUnderstand: true);

            request.Headers.Add(securityHeader);

            // complete
            return(Convert.DBNull);
        }
예제 #6
0
        internal static Token GenerateTokenWssUser(string Username, string Password)
        {
            //********************************** TOKEN *****************************************************
            UsernameToken token = new UsernameToken(Username, Password, PasswordOption.SendPlainText);

            XmlElement securityToken = token.GetXml(new XmlDocument());

            Token _token = new Token();

            _token.user = securityToken["wsse:Username"].InnerText;
            _token.pass = securityToken["wsse:Password"].InnerText;
            _token.encoding = securityToken["wsse:Nonce"].InnerText;
            _token.created = securityToken["wsu:Created"].InnerText;

            //*********************************************************************************************
            return _token;
        }
        public object BeforeSendRequest(ref Message request, System.ServiceModel.IClientChannel channel)
        {
            UsernameToken token = new UsernameToken(Username, Password, PasswordOption.SendPlainText);

            XmlElement securityToken = token.GetXml(new XmlDocument());

            // Modificamos el XML Generado.
            var nodo = securityToken.GetElementsByTagName("wsse:Nonce").Item(0);

            nodo?.RemoveAll();

            MessageHeader securityHeader = MessageHeader.CreateHeader("Security",
                                                                      "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",
                                                                      securityToken, false);

            request.Headers.Add(securityHeader);

            return(Convert.DBNull);
        }
        public object BeforeSendRequest(ref Message request, System.ServiceModel.IClientChannel channel)
        {
            var token = new UsernameToken(Username, Password, PasswordOption.SendPlainText);

            var securityToken = token.GetXml(new XmlDocument());

            // Modificamos el XML Generado.
            var nodo = securityToken.GetElementsByTagName("wsse:Nonce").Item(0);

            nodo?.RemoveAll();

            var securityHeader = MessageHeader.CreateHeader("Security",
                                                            EspacioNombres.wssecurity,
                                                            securityToken, false);

            request.Headers.Add(securityHeader);

            return(Convert.DBNull);
        }
        public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel)
        {
            string search = "<wsse:Nonce";
            string newTag = "<wsse:Nonce EncodingType='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary'";

            // Use the WSE 3.0 security token class
            UsernameToken token = new UsernameToken(this.Username, this.Password, PasswordOption.SendPlainText);

            // Serialize the token to XML
            XmlElement securityToken = token.GetXml(new XmlDocument());

            securityToken.InnerXml = securityToken.InnerXml.Replace(search, newTag);

            // Adding UserName token
            MessageHeader securityHeader = MessageHeader.CreateHeader("Security",
                                                                      "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", securityToken, false);

            request.Headers.Add(securityHeader);

            return(Convert.DBNull);
        }
예제 #10
0
        /// <summary>
        /// The before send request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <param name="channel">The channel.</param>
        /// <returns>
        /// The <see cref="object" />.
        /// </returns>
        public object BeforeSendRequest(ref Message request, System.ServiceModel.IClientChannel channel)
        {
            // Use the WSE 3.0 security token class
            var token = new UsernameToken(Username, Password, PasswordOption.SendPlainText);

            // Serialize the token to XML
            var securityToken = token.GetXml(new XmlDocument());

            // build the security header
            var securityHeader = MessageHeader.CreateHeader("Security", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", securityToken, false);

            request.Headers.Add(securityHeader);

            /*
             * if (request.Properties.ContainsKey(HttpRequestMessageProperty.Name))
             * {
             *  request.Properties.Remove(HttpRequestMessageProperty.Name);
             * }
             * request.Properties.Add(HttpRequestMessageProperty.Name, GetAuthHeader());
             */

            object httpRequestMessageObject;

            if (request.Properties.TryGetValue(HttpRequestMessageProperty.Name, out httpRequestMessageObject))
            {
                var httpRequestMessage = httpRequestMessageObject as HttpRequestMessageProperty;
                if (httpRequestMessage != null)
                {
                    httpRequestMessage.Headers[HttpRequestHeader.Authorization] = GetToken();
                }
            }
            else
            {
                request.Properties.Add(HttpRequestMessageProperty.Name, GetAuthHeader());
            }

            // complete
            return(Convert.DBNull);
        }
예제 #11
0
파일: Common.cs 프로젝트: evercam/snapmail
            public object BeforeSendRequest(ref Message request, IClientChannel channel)
            {
                // Use the WSE 3.0 security token class
                UsernameToken token = new UsernameToken(this.Username, this.Password, PasswordOption.SendHashed);

                // Serialize the token to XML
                XmlElement securityToken = token.GetXml(new XmlDocument());

                //
                MessageHeader securityHeader = MessageHeader.CreateHeader("Security", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", securityToken, false);
                request.Headers.Add(securityHeader);

                // complete
                return Convert.DBNull;
            }
예제 #12
0
        public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel)
        {
            // Use the WSE 3.0 security token class
            UsernameToken token = new UsernameToken(this.Username, this.Password, PasswordOption.SendPlainText);

            // Serialize the token to XML
            XmlElement securityToken = token.GetXml(new XmlDocument());

            //
            MessageHeader securityHeader = MessageHeader.CreateHeader("Security", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", securityToken, false);
            request.Headers.Add(securityHeader);

            MessageBuffer buffer = request.CreateBufferedCopy(Int32.MaxValue);
            request = buffer.CreateMessage();
            try
            {
                System.IO.File.WriteAllText(@"c:\temp\testthord\" + DateTime.Now.ToString("MMddyyyyhhmmssfff") + ".xml", request.ToString());
            }
            catch { }

            // complete
            return Convert.DBNull;
        }
예제 #13
0
    public object BeforeSendRequest(ref Message request, IClientChannel channel)
    {
        UsernameToken authentication = new UsernameToken(remoteServiceUsername, remoteServicePassword, PasswordOption.SendPlainText);     //Plain text is server requirement, we cannot do anything

        var webUserHeader = MessageHeader.CreateHeader("Security",
                                                       "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", authentication.GetXml(new XmlDocument()));

        request.Headers.Add(webUserHeader);

        return(null);
    }