2012-12-20 58 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的尝试都将被忽略,这就是我正在做的。

相关问题