微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WCF 下 SOAP 网络服务的同时客户端证书和用户名身份验证

如何解决WCF 下 SOAP 网络服务的同时客户端证书和用户名身份验证

我无法对 SOAP 网络服务进行身份验证,该服务需要使用客户端证书和用户名同时进行身份验证。

目标服务基本上支持三种认证模式:

  • 用户名 + 密码——这对我很有效,使用 BasicHttpsSecurityMode.Transport
  • 仅限证书 - 由于各种原因无法使用此模式
  • 证书 + 用户名 —(请注意,在这种情况下没有密码,它留空)我无法使用此模式。

在每种情况下,都是使用 TLS 1.2 的 HTTPS。

事实上,我不知道如何在 WCF 中配置绑定和身份验证设置来描述这种身份验证模式。到目前为止,我尝试了各种 BasicHttpsBinding 配置和 {{1 }} 设置,包括 this answer 中描述的设置。

在下面的代码中,当同时指定了 CustomBindingendpointConfig.Username 时,我根据我能够通过 google 搜索到的示例构建了一个 endpointConfig.ClientCertificate,但它不起作用。客户端确实向服务器发送了正确的证书,服务器回复了一条更改密码规范消息,并且客户端终止了 TLS 连接。

Wireshark capture

我能得到的最远的是以下错误消息:

无法为具有“ws1c.czeBox.cz”权限的 SSL/TLS 安全通道建立信任关系。

无法为具有“ws1c.czeBox.cz”权限的 SSL/TLS 建立安全通道。

构建服务客户端的代码如下所示:

CustomBinding

请注意,我对服务器的控制为零。这是政府服务,什么都谈不上。

在 .NET 4.7.x 上运行。可以升级到 4.8,但不能升级到 .NET Core。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。