Tôi đang chạy một dịch vụ WCF, trong số những thứ khác, được sử dụng làm đầu cuối cho một trang web. Bởi vì cả trang web và dịch vụ WCF đang chạy trên cùng một máy, và vì lợi ích của hiệu suất, tôi thiết lập nó với một netTcpBinding.Cấu hình bảo mật có thể nhanh nhất cho netTcpBinding là gì?
Hiện tại, bởi vì chúng tồn tại trên cùng một hộp, tôi thực sự không quan tâm đến bảo mật cấp độ vận chuyển hoặc mã hóa cấp tin nhắn; cách duy nhất có thể các tin nhắn có thể bị chặn là nếu ai đó vào máy chủ web, và nếu họ làm điều đó tôi đã có vấn đề lớn hơn rồi. Vì vậy, câu hỏi của tôi là: khi khách hàng và máy chủ đã có trên một hệ thống phụ đáng tin cậy, cấu hình nào có thể được sử dụng để đảm bảo netTcpBinding càng nhanh càng tốt?
Tất nhiên, câu trả lời có thể là sử dụng bảo mật "không". Nhưng trong trường hợp cụ thể của tôi, tôi vẫn cần sử dụng xác thực UserName dựa vào cơ sở dữ liệu tùy chỉnh. Nó có thể được cấu hình để nó vẫn sử dụng xác thực UserName, nhưng không bận tâm với chứng chỉ hoặc bảo mật dữ liệu giữa các thiết bị đầu cuối? Hoặc tôi có lẽ cần phải thực hiện một hành vi tùy chỉnh với một tiêu đề SOAP tùy chỉnh để lưu trữ tên người dùng/mật khẩu, và sau đó tôi thực sự có thể thiết lập bảo mật để "không"?
server Config
<netTcpBinding>
<binding name="Net_Tcp_Binding">
<security mode="Message">
<message clientCredentialType="UserName" />
</security>
</binding>
</netTcpBinding>
Nó sử dụng xác thực UserName tùy chỉnh - về cơ bản tất cả các cuộc gọi xác nhận & cho phép chống lại một cơ sở dữ liệu tùy chỉnh. Phía dịch vụ cũng sử dụng chứng chỉ để đàm phán với khách hàng, ví dụ:
<serviceBehaviors>
<behavior name="MyBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceAuthorization principalPermissionMode="Custom">
<authorizationPolicies>
<add policyType="MyAssembly.CustomAuthorizationPolicy,MyAssembly" />
</authorizationPolicies>
</serviceAuthorization>
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="MyAssembly.CustomCredentialValidator,MyAssembly" />
<serviceCertificate x509FindType="FindBySubjectName" findValue="CN=servercert" storeLocation="LocalMachine" storeName="My" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
Khách hàng Config
<netTcpBinding>
<binding name="Net_Tcp_Endpoint">
<reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
<security mode="Message">
<message clientCredentialType="UserName" />
</security>
</binding>
</netTcpBinding>