//[System.Web.Services.Protocols.SoapRpcMethod()] public string SayHello(string name) { SoapContext requestContext = Microsoft.Web.Services2.RequestSoapContext.Current; SoapContext responseContext = Microsoft.Web.Services2.ResponseSoapContext.Current; ISecurityTokenManager stm = SecurityTokenManager.GetSecurityTokenManagerByTokenType(WSTrust.TokenTypes.X509v3); X509SecurityTokenManager x509tm = stm as X509SecurityTokenManager; x509tm.DefaultSessionKeyAlgorithm = "TripleDES"; //----------Encryption X509SecurityToken x509Token = getToken("client"); if (x509Token == null) { //throw new SecurityFault(SecurityFault.FailedAuthenticationMessage, SecurityFault.FailedAuthenticationCode); throw new SecurityFault("Could not get encryption token...", SecurityFault.FailedAuthenticationCode); } else { EncryptedData ed = new EncryptedData(x509Token); responseContext.Security.Tokens.Add(x509Token); responseContext.Security.Elements.Add(ed); } //---------UsernameToken // UsernameToken usernameToken = GetSigningToken() as UsernameToken; // if (usernameToken == null || usernameToken.PasswordOption == PasswordOption.SendPlainText) { // throw new SecurityFault(SecurityFault.FailedAuthenticationMessage, SecurityFault.FailedAuthenticationCode); // } // //---------Signature // //X509SecurityToken x509Token = getToken("server"); X509SecurityToken x509TokenSigningToken = GetSigningToken() as X509SecurityToken; if (x509TokenSigningToken == null) //|| !CompareArray(x509TokenSigningToken.KeyIdentifier.Value, Convert.FromBase64String(clientKeyIdentifier))) { { throw new SecurityFault("Could not get signing token...", SecurityFault.FailedAuthenticationCode); } else { responseContext.Security.Tokens.Add(x509Token); responseContext.Security.Elements.Add(new MessageSignature(x509Token)); } return("Hello," + name); }
public void Run() { //WebServiceProxy.Service1 proxy = new WebServiceProxy.Service1(); WebServiceProxy.Service1Wse proxy = new WebServiceProxy.Service1Wse(); ISecurityTokenManager stm = SecurityTokenManager.GetSecurityTokenManagerByTokenType(WSTrust.TokenTypes.X509v3); X509SecurityTokenManager x509tm = stm as X509SecurityTokenManager; x509tm.DefaultSessionKeyAlgorithm = "TripleDES"; //------Encryption // X509SecurityToken token = getToken("server"); // if (token == null) throw new ApplicationException("Unable to obtain security token."); // EncryptedData ed = new EncryptedData(token); // proxy.RequestSoapContext.Security.Tokens.Add(token); // proxy.RequestSoapContext.Security.Elements.Add(ed); X509SecurityToken token = getToken("client"); if (token == null) { throw new ApplicationException("Unable to obtain security token."); } proxy.RequestSoapContext.Security.Tokens.Add(token); proxy.RequestSoapContext.Security.Elements.Add(new MessageSignature(token)); //------Username // string username = Environment.UserName; // Console.Write("Passwort for '" + username + "': "); // string password = Console.ReadLine(); // byte[] passwordBytes = System.Text.Encoding.UTF8.GetBytes(password); // //Array.Reverse(passwordBytes); // // //string passwordEquivalent = Convert.ToBase64String( passwordBytes ); // UsernameToken token = new UsernameToken( username, password, PasswordOption.SendHashed ); // proxy.RequestSoapContext.Security.Tokens.Add(token); // // //------Signature // proxy.RequestSoapContext.Security.Elements.Add( new MessageSignature( token ) ); Console.WriteLine("Ausgabe: " + proxy.SayHello("test")); }