Potrzebuję świadczyć usługę osobie trzeciej, która będzie wysyłać wiadomości z mydłem z podpisanym znacznikiem czasu.Usługa WCF z WS-Security wymaga tylko podpisanego znacznika czasu.
Jak mogę skonfigurować moją usługę, aby to obsługiwać?
UPDATE udało mi się zbliżyć do formatu komunikatu SOAP, że jesteśmy po WCF ale nalega na podpisanie zarówno nazwę użytkownika i tokenów znacznika czasu, Czy istnieje sposób zmodyfikować wiązania się podpisywać tylko znacznik czasu?
Dalsze Aktualizacja Oto nasze wymagania:
- Element Datownik muszą być podpisane.
- Nazwa CN na certyfikacie użytym do podpisania musi pasować do nazwy użytkownika give w elemencie UsernameToken.
- Certyfikat użyty do podpisania MUSI zostać wysłany w elemencie BinarySecurityToken.
- Element KeyInfo MUSI zawierać tylko element SecurityTokenReference, który musi być użyty do odniesienia do BinarySecurityToken.
- Należy określić algorytm kanonizacji.
- Podpisanie MUSI zostać określone i MUSI być aliasem SHA-1 lub SHA-2.
- Należy używać podpisów wolnostojących.
Wszelkie sugestie?
aktualnej konfiguracji
Client Oprawa
<bindings>
<wsHttpBinding>
<binding name="WSBC">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Certificate" proxyCredentialType="None"></transport>
<message clientCredentialType="UserName" negotiateServiceCredential="false" establishSecurityContext="false" />
</security>
</binding>
</wsHttpBinding>
</bindings>
klienta końcowego
<client>
<endpoint address="https://localhost/WcfTestService/Service2.svc"
behaviorConfiguration="CCB" binding="wsHttpBinding"
bindingConfiguration="WSBC"
contract="ServiceReference2.IService2"
name="wsHttpBinding_IService2" />
</client>
Client Zachowanie
<behaviors>
<endpointBehaviors>
<behavior name="MBB">
<clientCredentials>
<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" />
<serviceCertificate>
<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" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
Usługa Oprawa
<bindings>
<wsHttpBinding>
<binding name="ICB">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Certificate" proxyCredentialType="None"></transport>
<message clientCredentialType="UserName"
negotiateServiceCredential="false"
establishSecurityContext="false" />
</security>
</binding>
</wsHttpBinding>
</bindings>
serice Endpoint
<service name="WcfTestService.Service2" behaviorConfiguration="SCB">
<endpoint address="" binding="wsHttpBinding" contract="WcfTestService.IService2"
bindingConfiguration="ICB" name="MS" />
</service>
usługi Zachowanie
<behaviors>
<serviceBehaviors>
<behavior name="SCB">
<serviceCredentials>
<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" />
<userNameAuthentication
userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="WcfTestService.UsernameValidator, WcfTestService" />
<clientCertificate>
<authentication certificateValidationMode="None" revocationMode="NoCheck" />
</clientCertificate>
</serviceCredentials>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
Czy udało się skonfigurować konfigurację tak, aby tylko element datownika był podpisany? Obecnie próbuję osiągnąć to samo. – Edward