public override void SecureMessage(SoapEnvelope envelope, Security security) { // Get an X.509 certificate for signing the SOAP message. X509SecurityToken signatureToken = GetSecurityToken("subjectname"); if (signatureToken == null) { throw new SecurityFault("Message Requirements could not be satisfied."); } // Add the X.509 certificate to the header. security.Tokens.Add(signatureToken); // Specify that the SOAP message is signed using this X.509 // certifcate. MessageSignature sig = new MessageSignature(signatureToken); security.Elements.Add(sig); } public X509SecurityToken GetSecurityToken(string subjectName) { X509SecurityToken objX509SecurityToken = null; X509Store objX509Store = new X509Store(StoreName.My, StoreLocation.CurrentUser); objX509Store.Open(OpenFlags.ReadOnly); try { X509Certificate2Collection objX509Certificate2Collection = objX509Store.Certificates.Find(X509FindType.FindBySubjectName, subjectName, true); X509Certificate2 objX509Certificate2; if (objX509Certificate2Collection.Count == 1) { objX509Certificate2 = objX509Certificate2Collection[0]; objX509SecurityToken = new X509SecurityToken(objX509Certificate2); } else { objX509SecurityToken = null; } } catch (Exception ex) { objX509SecurityToken = null; } finally { if (objX509Store != null) objX509Store.Close(); } return objX509SecurityToken; }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)