5
所以我會第一個承認我對WS-Security內部知之甚少。我有一個SOAP服務工廠,如下所示。將此服務與內部僅測試.NET客戶端(通過svcutil.exe +自動生成的WSDL使用自動生成的.cs代理類)一起使用時,一切正常。在第5個「實際」(加密的)SOAP請求/響應之前,我可以看到前4個安全SOAP請求 - 響應握手對。我理解一般的安全性,但希望我知道關於這個特定握手的細節 - 我猜他們正在進行密鑰交換?SOAP 1.2 over SSL + HTTP基本身份驗證或WS-Security?
不管怎麼說,部分原因是因爲
- 我不知道底層的SOAP安全握手(WS-Security的)
- 我知道HTTPS和HTTP基本認證(和喜歡SSL傳輸的速度VS每SOAP消息加密/簽名,驗證操作)
- 我要保護的SOAP端點通訊科,同時保留與非.NET客戶端
我想我應該做的兼容性通過HTTPS + HTTP基本認證進行SOAP交換。 所以問題歸結爲
- 均通過HTTPS + HTTP基本身份驗證確定SOAP交換?或者罕見的(= interop惡夢!)可憎?
跟進到以上:我將如何配置我的服務工廠到推薦的設置?不用說,我想留英里遠從Windows身份驗證這是在互聯網環境下毫無意義......
public class SoapServiceHostFactory : ServiceHostFactory { private Type serviceInterfaceType; public SoapServiceHostFactory(Type serviceInterfaceType) { this.serviceInterfaceType = serviceInterfaceType; } protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses) { ServiceHost host = base.CreateServiceHost(serviceType, baseAddresses); ServiceMetadataBehavior smb = host.Description.Behaviors.Find<ServiceMetadataBehavior>(); // Enable metadata if (smb == null) { smb = new ServiceMetadataBehavior(); host.Description.Behaviors.Add(smb); } smb.HttpGetEnabled = true; // Enable debugging for service ServiceDebugBehavior sdb = host.Description.Behaviors.Find<ServiceDebugBehavior>(); if (sdb == null) { sdb = new ServiceDebugBehavior(); host.Description.Behaviors.Add(sdb); } sdb.IncludeExceptionDetailInFaults = true; // SOAP Security configuration WSHttpBinding myBinding = new WSHttpBinding(); myBinding.Security.Mode = SecurityMode.Transport; host.AddServiceEndpoint(serviceInterfaceType, myBinding, ""); return host; } }
謝謝。也許我應該將第二部分作爲一個單獨的問題發佈,但是如何將我的SOAP服務工廠配置爲執行SSL +基本身份驗證?尤其不清楚的是,基本認證將如何知道哪個dB/XML文件執行查找?綁定一些會員供應商?謝謝! – DeepSpace101 2012-03-03 22:17:47
通常SSL和Auth由Web服務器而不是SOAP層處理,但不確定WCF是否具體 – superfell 2012-03-05 21:05:11