WCF通过IHttpModule设置Thread.CurrentPrincipal

时间:2013-04-18 11:31:49

标签: .net wcf authentication ihttpmodule

我有aspcCompatibility =“true”的wcf + rest web服务。 为了提供自定义身份验证,我编写了asp.net http模块:IHttpModule。代码非常简单:只需将一些主体分配给Thread.CurrentPrinicpal属性。

在方法执行期间,我仍然将'empty / default'主体作为Thread.CurrentPrincipal的值。另外我注意到模块和操作执行中有不同的线程ID(Thread.CurrentThread)。我有一个建议,即wcf提供一个新线程来执行操作,但没有找到任何证据。

所以问题:我是否正确? wcf是否允许控制该行为? 我在这里很困惑,因为创建新线程会自动将主体移动到新线程。因此wcf'清理'他们..

与principalPermissionMode相同的问题=“无”。

我很感激任何想法!

干杯!

1 个答案:

答案 0 :(得分:0)

IMO - 当你从已经坐过的线程运行它时,线程将收到Principal。

Wcf以自己的方式管理线程(部分由InstanceMode控制 - PerCall,PerSession,......)。所以他们不会传播你的帖子细节。

可能您应该考虑使用其他模型进行身份验证。有关自定义身份验证的详细信息,请参阅此帖子:http://blogs.msdn.com/b/astoriateam/archive/2010/07/21/odata-and-authentication-part-6-custom-basic-authentication.aspx