예, 물론 - 전송 보안 대신 메시지 보안을 사용하는 경우에만 가능합니다. 지금처럼 바인딩 구성을 정의합니다
<netTcpBinding>
<binding name="UserNameSecurity">
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</netTcpBinding>
을하고 참조하는 (서버 및 클라이언트) 엔드 포인트에 바인딩 구성 :
<endpoint address="....."
binding="netTcpBinding"
bindingConfiguration="UserNameSecurity"
contract="IMyService" />
마크
UPDATE :
아, 그래, 서버 측에서는 서비스를 호출하는 클라이언트에게 서비스를 인증하는 인증서가 필요하며 메시지를 암호화하고 서명하는데도 사용됩니다. 서버에만 있습니다. 클라이언트는 아무 것도 설치할 필요가 없습니다.
구성 :
<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>
것은 당신이 당신의 설정에서 지정하는 "주체 이름"에서, 서버의 "로컬 컴퓨터"폴더에 서버의 인증서를 설치해야합니다.
그래서 원래 그게 내가 가진 것입니다. 그러나 서비스 인증서를 요청하는 예외가 발생합니다. "서비스 인증서가 제공되지 않습니다 .ServiceCredentials에 서비스 인증서를 지정하십시오." 아이디어가 있습니까? –
흠. 그게 내가 의심했던 것이다. 그것을 확인해 주셔서 감사합니다. –
이 접근 방식에서는 프로덕션 환경에서 자체 서명 된 인증서를 사용할 때의 해가 있습니까? 메시지를 암호화하는 데만 사용되지만 신원을 확인하는 것은 아닙니다. 메시지 암호화에 자체 서명 된 인증서를 사용하지 않으시겠습니까? – Vitalik