Sì, certo, ma solo se si utilizza la sicurezza dei messaggi (anziché la sicurezza del trasporto). Definire la configurazione di legame in questo modo:
<netTcpBinding>
<binding name="UserNameSecurity">
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</netTcpBinding>
e quindi fare riferimento tale configurazione vincolante gli endpoint (su server e client):
<endpoint address="....."
binding="netTcpBinding"
bindingConfiguration="UserNameSecurity"
contract="IMyService" />
Marc
UPDATE:
Ah, sì, sul lato server, è necessario un certificato per authenicare il servizio al client che lo chiama, e viene anche utilizzato per crittografare + firmare i messaggi. Questo è solo sul server - i client non devono installare nulla.
Configurazione:
<behaviors>
<serviceBehavior>
<behavior name="ServerInternet">
<serviceCredentials>
<serviceCertificate
findValue="MyServiceCertificate"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindBySubjectName" />
</serviceCredentials>
</behavior>
</serviceBehavior>
</behaviors>
<services>
<service name="MyServiceInternet"
behaviorConfiguration="ServerInternet">
....
</service>
</services>
Assicurarsi di installare il certificato del server nella cartella "Computer locale" sul server, con il "nome del soggetto" che si specifica nella propria configurazione.
fonte
2009-08-03 15:31:29
Quindi, questo è quello che avevo originariamente. Tuttavia, ottengo un'eccezione che richiede un certificato di servizio: "Il certificato di servizio non è fornito. Specifica un certificato di servizio in ServiceCredentials." Qualche idea? –
Hmmm. Questo è quello che sospettavo. Grazie per averlo confermato. –
In questo approccio c'è qualche danno nell'usare un certificato autofirmato nell'ambiente di produzione? Se è usato solo per crittografare i messaggi ma non per verificare l'identità. Quando non utilizzeresti un certificato autofirmato per la crittografia dei messaggi? – Vitalik