gpt4 book ai didi

c# - 无法跟踪使用 CreateChannelWithIssuedToken 创建的 WCF 客户端的错误

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:31 25 4
gpt4 key购买 nike

这是 this question here 的后续.可能与此没有直接关系。

我正在尝试调用使用从安全 token 服务获得的 token (联合安全性、WS-Trust 1.3)保护的 Web 服务。我有 SecurityToken (通用 XML),我创建了一个 ChannelFactory<T>然后我调用CreateChannelWithIssuedToken .

实际的错误出现在我尝试调用服务方法时。消息很短,我实际上不知道接下来要看哪里:MessageSecurityException和消息无法创建 token 引用。好吧,这可能意味着任何事情。

相关代码:

var binding = new WS2007FederationHttpBinding(WSFederationHttpSecurityMode.TransportWithMessageCredential);
binding.Security.Message.EstablishSecurityContext = false;

var factory = new ChannelFactory<IService>(
binding,
new EndpointAddress("..."));
factory.Credentials.SupportInteractive = false;

var token = STSClient.Issue();
_channel = factory.CreateChannelWithIssuedToken(token);

调用服务是:

var svcParams = ...;

//MessageSecurityException is thrown here
var svcResponse = _channel.SomeServiceMethod(params);

我想知道的是我接下来可以看哪里。什么可能导致此错误?

其他详细信息:

  1. 在向服务器发出任何请求之前抛出错误(使用 Fiddler 检查)。
  2. 服务器不是基于 WCF 的。这是一些符合 WS-Trust 和 WS-Security 的服务。

最佳答案

其实是联邦绑定(bind)配置不够的问题。因为我已经有了 token 并且已经签名,所以我应该将消息安全性上的 IssuedKeyType 设置为 SecurityKeyType.BearerKey

通过进一步研究,结果是每次都抛出 Unable to create token reference ,好吧,没有足够的细节来将 token 嵌入到请求中(通常它缺少配置绑定(bind)或绑定(bind)的 TransportSecurityBindingElement)。

这并没有完全解决整个“使用 token 调用服务”的问题,但它确实解决了这个特定的错误:

var binding = new WS2007FederationHttpBinding(WSFederationHttpSecurityMode.TransportWithMessageCredential);
binding.Security.Message.EstablishSecurityContext = false;
binding.Security.Message.IssuedKeyType = SecurityKeyType.BearerKey;
binding.Security.Message.NegotiateServiceCredential = false;

关于c# - 无法跟踪使用 CreateChannelWithIssuedToken 创建的 WCF 客户端的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25509951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com