Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过用户';使用ASP.NET和WCF跨层的身份验证_.net_Asp.net_Wcf_Identity - Fatal编程技术网

通过用户';使用ASP.NET和WCF跨层的身份验证

通过用户';使用ASP.NET和WCF跨层的身份验证,.net,asp.net,wcf,identity,.net,Asp.net,Wcf,Identity,我是WCF的新手。假设我有两个asp.net应用程序,一个使用windows身份验证(intranet应用程序),另一个使用表单身份验证(internet应用程序)。我希望这两个应用程序都有一个对物理上独立的机器的服务引用,我的所有业务逻辑都将位于该机器上(在WCF中)。因此,该应用程序如下所示: 浏览器-->ASP.NET-->WCF。当调用在WCF层结束时,我需要知道ASP.net获得的用户名(User.Identity.Name) 通过.NET远程处理,我创建了一个自定义主体,并将其保存在

我是WCF的新手。假设我有两个asp.net应用程序,一个使用windows身份验证(intranet应用程序),另一个使用表单身份验证(internet应用程序)。我希望这两个应用程序都有一个对物理上独立的机器的服务引用,我的所有业务逻辑都将位于该机器上(在WCF中)。因此,该应用程序如下所示:

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

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


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

我想您应该检查WCF成员资格提供商。我发布了几个月关于这本书的信息,并通过链接推荐了这本书


祝你好运!(您需要它)

您的WCF服务是否对ASP.NET应用进行身份验证和信任(例如,使用Windows身份验证对运行ASP.NET应用的服务帐户进行身份验证)

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


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

没错。我会信任ASP.NET服务帐户。自定义标题。好的,这是我考虑过的一种方法,但我认为可能会有一种更“标准”的WCF方式。谢谢。我不认为有一个标准的方法-至少我问了这个关于StackOverflow的问题,没有得到任何回应: