我有一个使用客户端应用程序服务,使认证(用户名/密码登录)针对使用窗体身份验证和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没有被附加到请求! –