我正在WCF中创建自定义通道,以实现自定义安全协议.不,不要逃跑!这不是那么可怕!
验证服务上的协议相对简单.困难的部分是根据客户端凭据将安全信息添加到请求中.
我想要做的是从我的频道实现中访问ClientCredentials对象(连接到正在使用的ClientProxy的对象).通常,我可以通过ServiceEndpoint实例上的Behaviors
属性访问我正在尝试访问的端点:
var credentials = channel.Endpoint.Behaviors.Find<ClientCredentials>();
但是,我似乎找不到从通道本身访问通道所关联的服务端点的方法 – ChannelBase类几乎没有零元数据.
有没有办法获得与我的频道相关联的端点?有没有其他方法可以在客户端访问客户端凭据?
最佳答案 标准安全通道不在内部使用ClientCredentials.他们改为使用从ClientCredentials构造的SecurityTokenManager.我建议使用一些反汇编程序来浏览整个实现.
通常,您的BindingElement应构建ChannelLister和ChannelFactory,并将所有需要的信息传递给它们.