Mam webservice, który wymaga podpisania kopert SOAP w komunikacji w obie strony. Moją wiadomość podpisuję swoim certyfikatem, serwer to rozpoznaje i odsyła swoją wiadomość podpisaną jego certyfikatem, którego klucz publiczny mam u siebie. Używam standardowej definicji behaviors w pliku konfiguracyjnym:
<behaviors>
<endpointBehaviors>
<behavior name="TehRightBehaviour">
<clientCredentials>
<clientCertificate findValue="my_cert" storeLocation="CurrentUser" x509FindType="FindBySubjectName" />
<serviceCertificate>
<defaultCertificate findValue="Service_cert1" x509FindType="FindBySubjectName" />
<authentication revocationMode="NoCheck" certificateValidationMode="None" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
sekcja client wygląda tak:
<client>
<endpoint address="https://xxxyyy:8081/cm/main"
behaviorConfiguration="TehRightBehaviour"
binding="customBinding"
bindingConfiguration="TehRealBinding"
contract="BrightMain.CMMainService"
name="cmmain">
<identity>
<dns value="Service_cert1" />
</identity>
</endpoint>
</client>
Cały szkopuł w tym, że webservice zwraca koperty podpisane więcej niż jednym certyfiatem. Czasem jest to Service_cert1, czasem Service_cert2. Czy jest możliwość jednoczesnego wskazania mu obu certyfikatów, tak żeby sam załatwiał sprawę sprawdzenia podpisu? Jak się realizuje takie rozwiązania po stronie klienta?