2016-07-21 55 views
1

我有一個小的WCF服務在內部網,我需要在其中實現身份驗證。該服務通過http與不同的Java客戶端進行通信(使用basicHttpBinding)。我試着配置,像這樣httpBasicBinding與身份驗證,沒有消息或傳輸安全

<basicHttpBinding> 
    <binding> 
     <security mode="None"> 
     <message clientCredentialType="UserName"/> 
     </security> 
    </binding> 
    </basicHttpBinding> 

綁定和增值服務行爲

<behavior> 
     <serviceMetadata httpGetEnabled="true"/> 
     <serviceCredentials> 
     <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="LocalTasks.Services.Validators.IntegrationUserNameValidator,LocalTasks.Services"/> 
     </serviceCredentials> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 

但是調用這個服務不打我的自定義UserNamePassword驗證。 我也嘗試過相同的變體,但安全模式設置爲消息並添加了證書。在這種情況下,驗證器工作正常。

如何配置服務以通過basicHttpBinding驗證用戶身份,而沒有任何消息或傳輸安全性?

回答

1

你不能那樣做。您需要消息或傳輸安全性,以便在從客戶端傳輸到服務器時加密憑證。

您確實應該使用消息或傳輸安全性。

您也可以使用TransportCredentialOnly,這將不需要SSL證書,但建議僅用於測試。

<basicHttpBinding> 
    <binding name="Authentication" > 
    <security mode="TransportCredentialOnly" > 
     <message clientCredentialType="UserName"/> 
    </security> 
    </binding> 
</basicHttpBinding> 
+0

因爲它需要修改Java客戶端的遺留代碼。因此,沒有任何方法可以將證書發送到服務器,而無需通過打開的http通道進行安全保護 – Anton

+0

如果你仍然無法加密,那麼你可以使用安全模式'TransportCredentialOnly'。看我的編輯。 – cvlad

+0

我明白了。任何額外的需要? – Anton

相關問題