我有一個使用客戶端應用程序服務,使認證(用戶名/密碼登錄)針對使用窗體身份驗證和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
並加入這對當前OperationContext
的OutgoingMessageProperties
創建。然後我在OperationContextScope
的使用期限內致電一種或多種服務方法。事情是,當我到達WCF服務時,我仍然無法看到類似身份驗證的任何事情,因爲我可以識別原始用戶。這種方法學來自各種例子,但我明顯錯過了WCF的一步。
我想你想分享您的應用程序和服務之間的身份驗證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
http://stackoverflow.com/questions/1087271/passing-formsauthentication-cookie-to-a-wcf-service沒有幫助,WCF服務內breakpont表明,一個HttpContext.Current.User.Identity對象存在,但該對象內的細節是空的。 –
尋找使用fiddler2,它會顯示我的cookie沒有被附加到請求! –