2012-05-26 77 views
1

想知道如何高效,安全地以及不會因爲過度複雜而將我們的頭髮撕掉的方式:我們有一個使用表單身份驗證的ASP.Net站點,並且想要實現一些WCF restful可以從第一個站點調用的Web服務,前提是用戶調用它們已通過身份驗證。調用WCF寧靜服務時需要形式認證用戶的方法?

我們希望將WCF RESTful服務託管在與ASP.Net站點不同的網站中。這兩個網站將在同一個域中(例如my-domain.com)。

我一直在WCF的各種綁定讀了,我不知道,如果是webHttpBindings去這裏的方式(他們是最REST友好的,但它們可以容納表單身份驗證的用戶?)

我正在尋找代碼的建議和參考,但我很想知道從哪裏開始,尋找什麼,有什麼可能,哪些不是。

每當我閱讀WCF認證時,似乎都不可避免地討論關於WS-security和X509證書的討論,而且我不知道我需要所有這些來完成我正在做的事情?我真正想要構建的是一系列WCF寧靜服務,它們只響應經過表單認證的用戶。如果沒有深入研究WS-Security和X509,就不可能做到這一點,但我希望儘可能簡單。

注意:我在一個月前詢問了一個有點similar question,但已決定使用表單認證。

回答

0

如果您沒有從瀏覽器調用WCF服務,那麼您甚至不需要保護它們。只需將它們從您的ASPX代碼調用到託管WCF的非公共站點即可。或者在服務器到服務器模式下使用X509證書。

如果您打算通過瀏覽器調用它們,那麼情況會變得更加複雜。在這種情況下,您可能想要放棄WCF並使用MVC 4 beta版本中包含的Web API來構建您的REST服務。

http://www.asp.net/web-api

+0

在這種情況下,究竟如何使用Web API幫助? –

+0

在Web API應用程序中,根據傳遞的表單身份驗證Cookie進行身份驗證/授權決策要容易得多。 – 0leg

+0

事實證明,使用WCF使用表單身份驗證比我想象的要容易。從來沒有需要這樣做。 [另一篇文章](http://stackoverflow.com/questions/1087271/passing-formsauthentication-cookie-to-a-wcf-service) – 0leg

0

已從代碼生成您的JavaScript後面。如果Page.User.IsAuthenticated,則呈現ajax腳本。如果不是,則呈現提醒用戶他們需要登錄的javascript。如果您不希望用戶將JavaScript從瀏覽器源切出並稍後運行,當它們未通過身份驗證時,您需要生成一個基於會話ID的令牌,可以在站點和服務之間傳遞。