Note that there are some explanatory texts on larger screens.

plurals
  1. POWCF Service with WS-Security requires Signed Timestamp only
    primarykey
    data
    text
    <p>I need to provide a service to a third-party that will be sending soap messages with a signed Timestamp.</p> <p>How can I configure my service to support this?</p> <p><strong>UPDATE</strong> I've managed to get close to the format of the Soap message that we're after but WCF insists on signing both the username and the timestamp tokens, Is there a way to modify the binding to only sign the timestamp?</p> <hr> <p><strong>Further Update</strong> Here are our requirements:</p> <ul> <li>The Timestamp element MUST be signed.</li> <li>The CN name on the certificate used for signing MUST match the Username give in the UsernameToken element.</li> <li>The certificate used for signing MUST be sent in the BinarySecurityToken element.</li> <li>The KeyInfo element MUST only contain a SecurityTokenReference element, which must be used to reference the BinarySecurityToken.</li> <li>A canonicalization algorithm MUST be specified.</li> <li>The SignatureMethod MUST be specified and MUST be the SHA-1 or SHA-2 alghorithm.</li> <li>Detached Signatures SHOULD be used.</li> </ul> <hr> <p>Any suggestions?</p> <p><strong>CURRENT CONFIG</strong></p> <p>Client Binding</p> <pre><code>&lt;bindings&gt; &lt;wsHttpBinding&gt; &lt;binding name="WSBC"&gt; &lt;security mode="TransportWithMessageCredential"&gt; &lt;transport clientCredentialType="Certificate" proxyCredentialType="None"&gt;&lt;/transport&gt; &lt;message clientCredentialType="UserName" negotiateServiceCredential="false" establishSecurityContext="false" /&gt; &lt;/security&gt; &lt;/binding&gt; &lt;/wsHttpBinding&gt; &lt;/bindings&gt; </code></pre> <p>Client Endpoint</p> <pre><code>&lt;client&gt; &lt;endpoint address="https://localhost/WcfTestService/Service2.svc" behaviorConfiguration="CCB" binding="wsHttpBinding" bindingConfiguration="WSBC" contract="ServiceReference2.IService2" name="wsHttpBinding_IService2" /&gt; &lt;/client&gt; </code></pre> <p>Client Behavior</p> <pre><code>&lt;behaviors&gt; &lt;endpointBehaviors&gt; &lt;behavior name="MBB"&gt; &lt;clientCredentials&gt; &lt;clientCertificate findValue="03 58 d3 bf 4b e7 67 2e 57 05 47 dc e6 3b 52 7f f8 66 d5 2a" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" /&gt; &lt;serviceCertificate&gt; &lt;defaultCertificate findValue="03 58 d3 bf 4b e7 67 2e 57 05 47 dc e6 3b 52 7f f8 66 d5 2a" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" /&gt; &lt;/serviceCertificate&gt; &lt;/clientCredentials&gt; &lt;/behavior&gt; &lt;/endpointBehaviors&gt; &lt;/behaviors&gt; </code></pre> <p>Service Binding</p> <pre><code>&lt;bindings&gt; &lt;wsHttpBinding&gt; &lt;binding name="ICB"&gt; &lt;security mode="TransportWithMessageCredential"&gt; &lt;transport clientCredentialType="Certificate" proxyCredentialType="None"&gt;&lt;/transport&gt; &lt;message clientCredentialType="UserName" negotiateServiceCredential="false" establishSecurityContext="false" /&gt; &lt;/security&gt; &lt;/binding&gt; &lt;/wsHttpBinding&gt; &lt;/bindings&gt; </code></pre> <p>Serice Endpoint</p> <pre><code>&lt;service name="WcfTestService.Service2" behaviorConfiguration="SCB"&gt; &lt;endpoint address="" binding="wsHttpBinding" contract="WcfTestService.IService2" bindingConfiguration="ICB" name="MS" /&gt; &lt;/service&gt; </code></pre> <p>Service Behavior</p> <pre><code>&lt;behaviors&gt; &lt;serviceBehaviors&gt; &lt;behavior name="SCB"&gt; &lt;serviceCredentials&gt; &lt;serviceCertificate findValue="4d a9 d8 f2 fb 4e 74 bd a7 36 d7 20 a8 51 e2 e6 ea 7d 30 08" storeLocation="LocalMachine" storeName="TrustedPeople" x509FindType="FindByThumbprint" /&gt; &lt;userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="WcfTestService.UsernameValidator, WcfTestService" /&gt; &lt;clientCertificate&gt; &lt;authentication certificateValidationMode="None" revocationMode="NoCheck" /&gt; &lt;/clientCertificate&gt; &lt;/serviceCredentials&gt; &lt;serviceMetadata httpGetEnabled="true" /&gt; &lt;serviceDebug includeExceptionDetailInFaults="false" /&gt; &lt;/behavior&gt; &lt;/serviceBehaviors&gt; &lt;/behaviors&gt; </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload