Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
对托管的WCF服务的请求是由IIS处理管道进行身份验证还是。。。?_Wcf_Iis 7_Was - Fatal编程技术网

对托管的WCF服务的请求是由IIS处理管道进行身份验证还是。。。?

对托管的WCF服务的请求是由IIS处理管道进行身份验证还是。。。?,wcf,iis-7,was,Wcf,Iis 7,Was,以下问题假设我们在中托管的是与Asp.Net并排的WCF服务: “当与Asp.Net并排托管WCF时-WCF托管 当 引发PostAuthenticateRequest事件,且不返回处理 到ASP.NET HTTP pipeline.Modules,这些模块被编码为拦截 管道后期的请求不会拦截WCF 请求。” “通过并行配置,WCF托管基础架构 截获WCF消息并将其路由出HTTP管道“ a) 假设WAS收到对WCF服务的请求,则在引发PostAuthenticateRequest事件时是否会调用

以下问题假设我们在中托管的是与Asp.Net并排的WCF服务:

“当与Asp.Net并排托管WCF时-WCF托管 当 引发PostAuthenticateRequest事件,且不返回处理 到ASP.NET HTTP pipeline.Modules,这些模块被编码为拦截 管道后期的请求不会拦截WCF 请求。”

“通过并行配置,WCF托管基础架构 截获WCF消息并将其路由出HTTP管道“

a) 假设WAS收到对WCF服务的请求,则在引发
PostAuthenticateRequest
事件时是否会调用WCF的身份验证机制(Windows、MembershipProvider或自定义身份验证),或者WCF仅在将请求路由出HTTP管道后才对请求进行身份验证?换句话说,WCF的身份验证机制是否在IIS的处理管道之外工作

b) 如果WCF的身份验证机制在IIS处理管道之外工作,那么我假设FormsAuthenticationModule不参与对WCF客户端的身份验证(假设服务使用forms身份验证)

c) 另外,如果WCF的身份验证机制在IIS处理管道之外工作,那么我假设必须将IIS/WAS配置为匿名身份验证,即使服务正在使用windows身份验证对客户端进行身份验证

d) 如果WCF服务由IIS7托管(除了服务必须只使用通过HTTP协议进行通信的端点这一事实之外),对我上述问题的答案会有什么不同吗


谢谢

我建议实施一个技术性的spike项目

在核心部分,您始终可以实现codeaccessattribute来保护operationcontracts

您可以从应用PrincipalPermission(内置)开始,其中您在Thread.CurrentPrincipal(wcf服务的构造函数)上设置了IPrincipal
当托管在IIS中时,您可以设置HttpContext.Current.User,但在您的情况下,HttpContext将为null。要使用PrincipalPermission,您需要有自己的能力来创建/实现IPrincipal。

我只能回答D部分和B部分,但这可能足以解决您试图解决的问题:如果您在ASP.Net应用程序中托管WCF服务,如果在WCF服务中启用ASP.Net兼容性,则支持表单身份验证。我们在Silverlight小程序中广泛使用此方法

这是一个分为两步的过程:

1) 使用
AspNetCompatibilityRequirements
属性装饰您的WCF服务实现类(下面是vb.net代码):

_
2) 将以下条目添加到web.config中的
部分:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />