在 WCF 服务类的构造函数中,我将当前主体设置为消息头中传递的主体的主体:
Thread.CurrentPrincipal = OperationContext.Current.IncomingMessageHeaders.GetHeader<BBPrincipal>("bbPrincipal", "ns");
这似乎工作正常,但是当我在方法中引用主体时,Thread.CurrentPrincipal 已恢复为 WindowsPrincipal。
据推测该方法是在不同的线程上触发的。如何确保该方法使用服务构造函数中设置的主体?
我刚刚找到了我原来问题的答案。为了阻止 WCF 使用空白主体覆盖主体,请在行为配置中设置以下内容:
<serviceAuthorization principalPermissionMode="None" />
就这么简单,无需对现有代码库进行彻底的更改。
See: http://connect.microsoft.com/VisualStudio/feedback/details/369445/wcf-service-configured-for-transport-security-shouldnt-change-thread-currentprincipal http://connect.microsoft.com/VisualStudio/feedback/details/369445/wcf-service-configured-for-transport-security-shouldnt-change-thread-currentprincipal
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)