2010-08-04 53 views
0

我有一個asp.net MVC 2站點設置以提供API JSON/XML響應保護MVC休息+ SOAP服務與單個鍵策略

例如

[GET] /產品/ 10

返回的產品的XML響應

此外,我有嵌入到其返回相同的方法(同一合同)的位點的WCF SOAP服務,而是經由SOAP

例如

GetProduct(10)

返回XML肥皂產物。

我選擇了這條路由,因爲我喜歡純粹的MVC方法+路由引擎。我的客戶希望通過使用基於密鑰的/令牌認證系統來保護每個請求。

他們只是想在每個請求的關鍵......

我的問題is..what是最好的(和最方便的辦法)這樣做呢?我正在考慮使用自定義HTTP標頭,但是......有些客戶可能會在設置此值時遇到問題嗎?使用從WSDL生成的Soap客戶端很容易嗎?

我寧願不污染我的業務對象與關鍵屬性。

+1

您的意思是「WCF」,而不是「WPF」。 – 2010-08-04 02:58:48

+0

另外,請記住我的客戶不會使用WCF訪問SOAP服務,但可能是java/php – dmose 2010-08-04 02:58:50

回答

0

答案取決於你想要支持的客戶端類型。你有很多的選擇:

  • 使用的wsHttpBinding用於支持WS-Security的
  • 使用basicHttpBinding的對不客戶現代的客戶 - 你可以通過SSL,如果你想運行它,並且可以使用您的選擇HTTP身份驗證技術
  • 如果您願意,可以使用basicHttpBinding和您的自定義標頭。請注意,某些客戶端不支持標題,或者必須付出額外的努力才能使用它們。我個人不介意讓這樣的客戶感到不安,但你可能會這樣。

無論你選擇哪一個,WCF都會允許你同時實現它們。您可以讓一個服務在多個端點上提供相同的合同。例如,你可以在https://services.company.com/myservice/basic上保持basicHttpBinding,同時在http://services.company.com/myservice/secure上支持WS-Security。

+0

我想使用第三個選項......這不一定是最安全的服務。你有任何與cusotm heders的基本HttpBinding的例子嗎?我甚至無法弄清楚如何將它們添加到.NET中的服務客戶端? – dmose 2010-08-04 03:48:46

+0

你是否必須像這樣包裝每個電話? http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/4f8ab001-dafa-4347-bc41-95255ecc9230 – dmose 2010-08-04 03:49:38

+0

@dmose:如果您在WSDL中定義了標頭,那麼當您使用「添加服務參考」,他們應該在你的客戶端。我相信這會強制WCF使用消息合約,它可以包含標頭和實體。 – 2010-08-04 03:54:38