我有一个托管在 WebProject 中的 RESTful WCF 应用程序。我正在使用 HttpModule 对传入请求的标头进行身份验证,如果标头和 URL 有效,我将两者都设置
System.Threading.Thread.CurrentPrincipal = myCustomPrincipal;
这对于 GET 请求非常有效,但是当我执行 POST 并检查 Thread.CurrentPrincipal 时,它被设置为 WindowsPrincipal 类的实例。我在一些博客文章中读到 HttpContext.Current.User 和 Thread.CurrentPrincipal 都应该设置为相同的 IPrincipal 对象,但是当我分配
HttpContext.Current.User = myCurrentPrincipal;
我的服务永远不会受到打击,并且正在发回我从未实际分配过的 401 UnAuthorized 消息。
请注意,我在我的 context_PostAuthorizeRequest 方法中分配了这些主体,该方法已附加到上下文的命名处理程序。
请帮忙。我究竟做错了什么?下面是我的 webconfig 的 httpModules 配置示例:
<httpModules>
<add name="PublicServiceSecurity" type="Company.PublicService.PublicServiceSecurity,PublicService" />
<add name="ErrorModule" type="Company.Web.ErrorModule,WebComponentLibrary" />
<add name="HbnSessionModule" type="Company.Web.HbnSessionModule,WebComponentLibrary" />
</httpModules>