使用ASP.NET和WCF在层之间传递用户身份

时间:2009-11-11 13:59:33

标签: .net asp.net wcf identity

我是WCF的新手。假设我有两个asp.net应用程序,一个使用Windows身份验证(一个内部网应用程序),另一个使用表单身份验证(一个互联网应用程序)。我希望这两个应用程序都具有对物理上独立的机器的服务引用,其中所有业务逻辑都将存在(在WCF中)。所以,应用程序是这样的:

浏览器 - > ASP.NET - > WCF。当呼叫在WCF层结束时,我需要知道ASP.net获得的用户名(User.Identity.Name)。

使用.NET Remoting,我创建了一个我在LogicalCallContext中存储的自定义主体。然后在远程服务器端使用自定义远程处理接收器,我将当前线程主体设置为LogicalCallContext中的主体。

使用WCF执行此类操作的正确方法是什么?同样,我的WCF服务可能只能由运行ASP.NET的服务帐户调用,但我需要知道该调用最终代表谁。

2 个答案:

答案 0 :(得分:2)

您的WCF服务是否验证并信任ASP.NET应用程序(例如,使用Windows身份验证来验证运行ASP.NET应用程序的服务帐户)。

如果是这样,您可以考虑在自定义SOAP标头中传递有关最终调用方的信息。

您可以使用自定义WCF行为,使用ClientMessageInspector隐藏应用程序代码中的血腥细节,ClientMessageInspector在客户端添加SOAP标头,而DispatchMessageInspector则在服务器端处理SOAP标头。

答案 1 :(得分:1)

我猜你想要查看WCF会员提供商。我发布了几个月的关于它的http://sgomez.blogspot.com/2007/12/wcf-membership-provider-sample.html点击链接,我还推荐了Learning WCFMichele LeRoux Bustamante一书。

祝你好运! (你需要它)