我正在運行一個WCF服務,除此之外,它被用作網站的後端。由於Web站點和WCF服務都在同一臺機器上運行,爲了提高性能,我使用netTcpBinding進行設置。netTcpBinding最快可能的安全配置是什麼?
現在的事情是,因爲它們存在於同一個盒子裏,我真的不關心傳輸級別的安全或消息級加密;消息被攔截的唯一可能方式是如果有人進入Web服務器本身,並且如果他們這樣做,我已經遇到了更大的問題。
所以我的問題是:當客戶端和服務器已經在受信任的子系統上時,可以使用什麼配置來確保netTcpBinding儘可能快?
當然,答案可能是使用「none」的安全性。但在我的特殊情況下,我仍然需要對自定義數據庫使用UserName身份驗證。可以配置它,以便它仍然使用UserName身份驗證,但不打擾證書或保護端點之間的數據?或者,我可能需要實現一個自定義SOAP頭的自定義行爲來存儲用戶名/密碼,然後我真的可以將安全性設置爲「無」?
服務器配置
<netTcpBinding>
<binding name="Net_Tcp_Binding">
<security mode="Message">
<message clientCredentialType="UserName" />
</security>
</binding>
</netTcpBinding>
它使用自定義的用戶名認證 - 基本上每一個電話驗證&授權針對自定義數據庫。在服務端還採用了證書與客戶,如洽談:
<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>
客戶端配置
<netTcpBinding>
<binding name="Net_Tcp_Endpoint">
<reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
<security mode="Message">
<message clientCredentialType="UserName" />
</security>
</binding>
</netTcpBinding>