WCF - 在 header 中传递 CurrentPrincipal

标签 wcf header wcf-security

我有一个 WCF 服务需要知道调用用户的委托(delegate)人。

在我拥有的服务的构造函数中:

Principal = OperationContext.Current.IncomingMessageHeaders.GetHeader<MyPrincipal>("myPrincipal", "ns");

在调用代码中我有类似的东西:

        using (var factory = new ChannelFactory<IMyService>(localBinding, endpoint))
        {
            var proxy = factory.CreateChannel();
            using (var scope = new OperationContextScope((IContextChannel)proxy))
            {
                var customHeader = MessageHeader.CreateHeader("myPrincipal", "ns", Thread.CurrentPrincipal);
                OperationContext.Current.OutgoingMessageHeaders.Add(customHeader);

                newList = proxy.CreateList();
            }
        }

一切正常。

我的问题是,如何避免必须在 using (var scope...{ [create header and add to OperationContext]?

中包装所有代理方法调用?

我可以创建一个自定义 ChannelFactory 来处理将 myPrincipal header 添加到操作上下文吗?这样的事情会节省我不想做的整个复制/粘贴负载,但我不确定如何实现它:)

谢谢

最佳答案

设置 WCF 主体的正确时间是通过 IAuthorizationPolicy,通过在配置中指定自定义策略。这完全涵盖了 here .如果您尝试在其他点(可能是检查员)设置委托(delegate)人,它可能会被系统重置。

关于WCF - 在 header 中传递 CurrentPrincipal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2689521/

相关文章:

c# - webservice从webMethod参数中删除NameSpace的问题

c - 重新创建 Win32 的 header 是个好主意吗?

php - 如何确定压缩文件的内容长度?

WCF 与 WSHttpBinding、消息安全、clientCredentialType ="UserName"证书自托管问题

c# - 连接 WCF 服务时遇到问题

c# - WCF 自定义绑定(bind)或 basichttpbinding

WCF 代理类型与 WCF 服务类型位于不同的命名空间中

wcf - 将服务引用添加到 Windows 服务中托管的 WCF 服务时出现问题

swift - 在 Swift 的 X-Auth-Token 中添加 API key ?

wcf - "Guarding"来自某些用户的WCF服务-应用程序身份