c# – 我如何使用自定义IChannel或IChannelFactory访问ClientCredentials?

我正在WCF中创建自定义通道,以实现自定义安全协议.不,不要逃跑!这不是那么可怕!

验证服务上的协议相对简单.困难的部分是根据客户端凭据将安全信息添加到请求中.

我想要做的是从我的频道实现中访问ClientCredentials对象(连接到正在使用的ClientProxy的对象).通常,我可以通过ServiceEndpoint实例上的Behaviors属性访问我正在尝试访问的端点:

var credentials = channel.Endpoint.Behaviors.Find<ClientCredentials>();

但是,我似乎找不到从通道本身访问通道所关联的服务端点的方法 – ChannelBase类几乎没有零元数据.

有没有办法获得与我的频道相关联的端点?有没有其他方法可以在客户端访问客户端凭据?

最佳答案 标准安全通道不在内部使用ClientCredentials.他们改为使用从ClientCredentials构造的SecurityTokenManager.我建议使用一些反汇编程序来浏览整个实现.

通常,您的BindingElement应构建ChannelLister和ChannelFactory,并将所有需要的信息传递给它们.

点赞