2012-12-20 56 views
0

我有一個使用客戶端應用程序服務,使認證(用戶名/密碼登錄)針對使用窗體身份驗證和SqlMembershipProvider的/的SqlProfileProvider/SqlRoleProvider相關Web應用程序一個WPF應用程序。這一切工作,我可以可靠地驗證用戶/密碼組合。ASP.NET客戶端應用程序服務的身份驗證和WCF

WPF應用程序還調用了一些由同一Web應用程序暴露出來用於CAS認證的WCF服務。我現在希望能夠將身份驗證詳細信息(從客戶端應用程序服務)傳遞到WCF服務,以便我可以識別在這些服務中經過身份驗證的用戶。如果沒有進行身份驗證,我還需要能夠防止使用WCF服務。

我發現了幾個.NET 3.5示例,其中CAS身份驗證用於.asmx Web服務,或者針對不使用ClientBase並具有身份驗證功能的WCF數據服務提供身份驗證,但是我找不到任何純WCF的例子。任何人都可以指引我使用這種方案嗎?我爲這個項目使用.NET 4.0。

我還發現this stackoverflow question但再次,這是回答對的.asmx Web服務,而不是爲WCF。

我已經得到最接近涉及的OperationContextScope,然後從ClientFormsIdentity對象的cookie頭複製到一個HttpRequestMessageProperty並加入這對當前OperationContextOutgoingMessageProperties創建。然後我在OperationContextScope的使用期限內致電一種或多種服務方法。事情是,當我到達WCF服務時,我仍然無法看到類似身份驗證的任何事情,因爲我可以識別原始用戶。這種方法學來自各種例子,但我明顯錯過了WCF的一步。

+0

我想你想分享您的應用程序和服務之間的身份驗證cookie。檢查這兩個,看看他們是否有所幫助。 http://stackoverflow.com/questions/1087271/passing-formsauthentication-cookie-to-a-wcf-service http://www.codeproject.com/Articles/190806/Send-Cookies-When-Making-WCF-Service -Calls – Evan

+0

http://stackoverflow.com/questions/1087271/passing-formsauthentication-cookie-to-a-wcf-service沒有幫助,WCF服務內breakpont表明,一個HttpContext.Current.User.Identity對象存在,但該對象內的細節是空的。 –

+0

尋找使用fiddler2,它會顯示我的cookie沒有被附加到請求! –

回答

0

發現了它。

在我的綁定中,我指定了allowCookies =「true」。

根據Wiktor Zychla,「將BasicHttpBinding上的AllowCookies屬性設置爲true會啓用自動cookie管理」 - 這意味着任何試圖在代碼中設置cookie的嘗試都將被忽略,這就是我正在做的。

相關問題