ASP.NET客户端应用程序服务身份验证和WCF

问题描述 投票:0回答:2

我有一个WPF应用程序,它使用客户端应用程序服务来允许对使用Forms身份验证和SqlMembershipProvider / SqlProfileProvider / SqlRoleProvider的相关Web应用程序进行身份验证(用户名/密码登录)。 所有这些都有效,我可以可靠地验证用户/密码组合。

WPF应用程序还调用由用于CAS身份验证的同一Web应用程序公开的许多WCF服务。 现在,我希望能够将身份验证详细信息(从客户端应用程序服务)传递到WCF服务,以便我可以识别在那些服务中进行身份验证的用户。 如果没有进行身份验证,我还需要能够阻止使用WCF服务。

我发现了几个.NET 3.5示例,其中对.asmx Web服务使用CAS身份验证,或者针对不使用ClientBase并内置身份验证功能的WCF数据服务提供身份验证,但是我找不到任何带有纯WCF的示例。 有人能指出我要启用这种情况的指令吗? 我为此项目使用.NET 4.0。

我也发现了这个stackoverflow问题,但同样可以为.asmx Web服务而不是WCF回答。

我得到的最接近的内容包括创建OperationContextScope ,然后将cookie头从ClientFormsIdentity对象复制到HttpRequestMessageProperty并将其添加到当前OperationContextOutgoingMessageProperties中。 然后,我在OperationContextScope的生命周期内调用服务的一种或多种方法。 问题是,当我进入WCF服务时,仍然看不到任何类似于身份验证的东西,因为我可以识别原始用户。 这种方法已从各种示例中获取,但是我显然在WCF端缺少一步。

wcf .net-4.0 forms-authentication asp.net-4.0
2个回答
1
投票

我认为您需要切换到Microsoft现在让人们用于WCF服务的Web API。 查看通过Web APIhttp://aamirposwal.blogspot.com/2012/05/aspnet-web-api-custom-authorize-and.html 使用表单身份验证


0
投票

找到了。

在绑定中,我指定了allowCookies =“ true”。

根据Wiktor Zychla所说 ,“将BasicHttpBinding上的AllowCookies属性设置为true会打开自动cookie管理”-这意味着任何在代码中设置cookie的尝试都将被忽略,这就是我正在做的事情。

© www.soinside.com 2019 - 2024. All rights reserved.