具有传输和消息安全性的 WCF 绑定

2023-12-23

我正在从事一个大项目,该项目广泛使用WCF用于不同类型的通信。作为新要求的一部分,我们需要与SOAP由第三方开发的 Web 服务。他们的服务是用Java开发的,有两个安全要求:

  1. 它需要基本身份验证超过运输和

  2. 该消息必须是使用 X509 证书签名(未加密)使用WS-安全(OASIS)不可否认性标准。

我遇到的问题是 WCF 提供的绑定允许使用传输或消息安全性,但是不同时两者。因此,我可以签署 SOAP 消息或发送 BASIC 身份验证凭据,但到目前为止我还无法按照我的要求同时完成这两项操作。

几天来我一直在努力寻找解决方案,到目前为止,我得出的结论是,我最好的选择可能是以编程方式进行自定义绑定。使用多个来源,这就是我现在所拥有的:

var b = new CustomBinding();

var sec = (AsymmetricSecurityBindingElement)SecurityBindingElement.CreateMutualCertificateBindingElement(MessageSecurityVersion.WSSecurity10WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10);

UserNameSecurityTokenParameters tokenParamenters = new UserNameSecurityTokenParameters();
tokenParamenters.InclusionMode = SecurityTokenInclusionMode.AlwaysToRecipient;
tokenParamenters.RequireDerivedKeys = false;

b.Elements.Add(sec);
b.Elements.Add(new TextMessageEncodingBindingElement(MessageVersion.Soap11, Encoding.UTF8));
b.Elements.Add(new HttpsTransportBindingElement());

WSClient svc = new WSClient(b, new EndpointAddress(new Uri("https://serviceurl.com/SoapWS"), new DnsEndpointIdentity("CertificateIdentity"), new AddressHeaderCollection()));
svc.ClientCredentials.UserName.UserName = "username";
svc.ClientCredentials.UserName.Password = "password";

svc.ClientCredentials.ClientCertificate.Certificate = new X509Certificate2("Certificate.p12", "password");
svc.ClientCredentials.ServiceCertificate.DefaultCertificate = new X509Certificate2("Certificate.p12", "password");
svc.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None;

string resp = svc.DoSomething();

虽然这似乎是使用证书对消息进行签名(无法完全检查),但基本身份验证部分并未发生。来自服务器的响应是:

HTTP 请求未经客户端身份验证方案“匿名”的授权。从服务器收到的身份验证标头是“Basic Realm=”realm””。

任何关于如何让此绑定通过 BASIC 身份验证进行传输身份验证的见解都会非常有帮助。提前致谢。

PS:请注意,我无法控制我尝试与之通信的网络服务。


配置https传输通道:

HttpsTransportBindingElement h = new HttpTransportBindingElement();
h.AuthenticationScheme = AuthenticationSchemes.Digest;
h.realm = ...

如果你遇到麻烦,我建议首先设置一个工作传输基本 http 绑定,这样你就会看到你通过服务器 https 传输(你应该期望得到一个肥皂故障 b/c 缺乏签名)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有传输和消息安全性的 WCF 绑定 的相关文章

  • 如何在会话失效后强制 Jetty 通过 BASIC 身份验证请求凭据?

    我使用 jetty 6 1 22 和 BASIC 身份验证作为我的登录机制 我第一次登录网络应用程序时 浏览器会请求用户名和密码 如果尝试使用 session invalidate 注销 会话将失效 但凭据会被缓存 这意味着 如果我尝试连接
  • ASP.NET Identity 2.0解密Owin cookie

    我正在应用多租户的服务器端应用程序中工作 在这个服务器端我有一个后台 ASP NET MVC 和后端 WCF 我想解密身份 cookie 以便我可以检查它是否有效并使用它在 WCF 服务中进行身份验证 更具体地说 我真的想知道 ASP NE
  • RESTful WCF 的最低配置

    为了让 WCF 与 REST 一起工作 我至少需要在 web config 中放入什么 我已经用 WebGet 注释了我的方法 但他们没有收到消息 我发现您可以将以下内容添加到 svc 文件中的 ServiceHost 指令中 它会自动为您
  • python 3 suds 缓存不工作

    我正在尝试编写一个通过 Python 访问 Sharepoint 的脚本 已安装以下库 suds jurko ntlm 以下代码成功 但需要接近 20 秒 usr bin env python3 from suds client impor
  • WCF 的 BasichttpBinding 与 WSHttpBinding

    我想用服务器数据更新客户端数据 反之亦然 目前我正在使用 BasicHttpBinding 它比 wsHttpBinding 更快 我的要求是达到 快速数据通讯 安全通讯 BasicHttpBinding 和 wsHttpBinding 适
  • WCF 服务契约将被 XML 和 Json 序列化

    我如何创建要加入的服务合同XmlSerializer 格式也WebMessageFormat Json在 WCF RESTful 服务中 我需要的是从 ASP Net 1 1 的代码后面调用 CallADSWebMethod 操作契约 该契
  • .NET 4.5 和 .NET 4.5.1 是否默认启用 TLS 1.1 和 TLS 1.2?

    在我们的 Windows 2012 Server R2 上 我们需要禁用 TLS 1 0 不过 我们正在运行 NET 4 5 Wcf 服务 我们发现 如果禁用 TLS 1 0 WCF 服务将不再运行 因为我们收到错误 现有连接被远程主机强制
  • 使用 Rx 简化异步 Silverlight Web 服务请求

    我已经使用 Rx 为我的 WCF Web 服务编写了一个简化的 Silverlight 客户端库 但是我注意到有时我会丢失已完成的事件 public IObservable
  • WCF 服务中无法解释的程序集负载 (IIS 7)

    我正在开发一个新的 WCF Web 服务 该服务将托管在现有的 ASP NET Web 应用程序中 当我尝试运行服务的 svc 文件时 出现异常 无法找到程序集的文件 无法加载文件或程序集 System IdentityModel Vers
  • 服务具有零个应用程序(非基础设施)端点

    我最近创建了一个WCF服务 dll 和一个服务主机 exe 我知道我的 WCF 服务工作正常 因为我能够成功地将服务添加到 WcfTestClient 但是 当我从服务主机 exe 使用 WCF 时 我似乎遇到了问题 我可以将对 WCF d
  • Web 服务需要一个 DataSet 对象,我如何通过 ColdFusion 或原始 XML 提供该对象?

    我需要调用用 NET 编写的 Web 服务 进行调用的应用程序是用 ColdFusion 编写的 Web 服务期望的参数之一是 DataSet 对象 我无法在 ColdFusion 中实例化 NET DataSet 对象 如何向 Web 服
  • PHP WCF 集成

    是不是如果我想支持php客户端访问我的服务 我必须有一个基本的http端点 这是因为php仍然只支持soap 1 1吗 据我所知 自从我使用 PHP 以来已经两年了 情况仍然如此 如果客户端应用程序将使用 PHP 的内置 SoapClien
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 使用 HttpClient 调用 WCF 服务

    我必须调用 WCF 服务 WCF 服务已开启 我可以编辑其配置 我想创建一个调用该服务的客户端 我无法将服务引用添加到我的客户端 因此我尝试使用 HttpClient 调用它 客户端代码 using var client new HttpC
  • WCF MaxReceivedMessageSize 属性未采用

    搜索了一下 没有运气 我不断得到 已超出传入消息的最大消息大小配额 65536 要增加配额 请使用相应绑定元素上的 MaxReceivedMessageSize 属性 这是有道理的 所以我进入服务器和客户端配置并进行更改 Client
  • cxf 解组错误:意外元素

    我正在尝试使用 SOAP 服务 使用 maven cxf codegen plugin 生成存根 大多数服务一切都很好 除了一个丑陋的服务 在这种情况下 当调用时 服务会发送正确的响应 但我生成的存根无法解组它 生成一个异常 例如 为了简短
  • 以编程方式获取命名管道的系统名称

    我正在使用 WCF NetNamedPipeBinding 编写进程间通信 我的目标是让服务在 net pipe localhost service 上运行 所以我运行最简单的主机 host new ServiceHost contract
  • 如何在自托管 WCF 中获取多部分表单数据?

    我已经搜索了很长一段时间 但没有找到我要找的东西 我在 Windows 应用程序中自行托管了一个 http WCF 现在 在我的服务方法之一中 我需要接收一个文件和一些表单数据字段 在类似的问题中 情况要么发送一个文件 这是通过流数据然后转
  • WCF 服务调用包装器

    为 WCF 服务调用创建包装器的最佳实践是什么 我认为有必要 为了在同一个地方监视所有呼叫 我正在考虑使用这种代码 这是正确的想法吗 RetType t ServiceExecutionContext
  • 使用 C# 读取 Soap 消息

随机推荐

  • 获取 ITextSharp 支持的字体列表

    我正在使用 ITextSharp 进行一个项目 并正在寻找一种合理的方法来获取可供使用的不同字体的字符串列表 我想也许我可以使用反射并循环一类可用字体 但似乎没有一种简单的方法可以做到这一点 我真正想做的是提供可用 支持的字体下拉菜单 供用
  • 为什么docker在构建镜像的同时还要创建容器?

    为什么 docker 会为 Dockerfile 中的每个命令启动一个容器 我了解为每个命令创建一个新层 Step 1 3 FROM nginx latest latest Pulling from library nginx 8ec398
  • Rails - 根模型或应用程序模型

    我只是环顾了一下 Rails 发现有一个应用程序控制器 但没有应用程序模型 Rails 中没有根模型吗 如果不是 您将在每个模型中都需要的一段代码放在哪里 谢谢 亚历克斯 没有什么说你的控制器必须子类化ApplicationControll
  • strtok 未处理的异常;写入位置访问冲突

    include
  • 使用 Powershell 和文件夹中的文件进行打印

    我有一个可以进行现场打印的脚本 目前它工作得不太好 因为下面的命令适用于发送到文件夹进行打印的各种文件类型 但问题是它一次只能打印 1 个文档 Start Process FilePath c tests docx Verb Print 我
  • 无法使用 Edge.js 从节点服务调用 C# DLL 内的方法

    我正在使用 Edge js 并且能够运行大部分示例 但是当涉及到使用编译的 C dll 文件时 我无法让它工作 我的node js代码是 var clrMethod edge func assemblyFile C Users hello
  • 如何从 Google App 脚本中的自定义对话框窗口获取数据?

    我创建了一个自定义对话框窗口 https developers google com apps script guides dialogs在 Google 电子表格中使用 Google App 脚本 如下所示 如何将数据从窗口获取到电子表格
  • R-使用ggplot在同一图表上为三个数据集创建图例

    我想知道是否可以使用 R 中的 ggplot 为包含多个系列图的图形创建图例框 本质上 这就是我正在做的事情 x lt c 1 2 3 4 y lt c 1 1 1 2 1 3 1 4 y2 lt c 2 1 2 2 2 3 2 4 x3
  • 网站是否也应该是一种网络资源?

    每个网络应用程序 每个网站 都是一项服务 使网站易于网络冲浪者使用的功能也使 Web 服务 API 易于程序员使用 Richardson 和 Ruby RESTFul Web 服务 正如我所希望的那样 同时也是 Web 服务的网站提供其资源
  • 制作模式以使用 NSRegularExpression

    斯威夫特 4 4 我想创建NSAttributedString using NSRegularExpression This two are bold text and different
  • 如何设置圆的物理属性,使其遵循给定的路径

    物理体圈的运动对于我想要实现的目标来说太不稳定了 我想限制它 使其遵循接触特定点 或一系列点 的特定路径 如下图所示 如何设置物理属性以遍历相似的路径 如何设置圆的物理属性 使其遵循给定的路径 因此 本质上您希望使用实时运动将节点移动到特定
  • mmap 是进程间通信的最佳方式吗?

    我使用文件在 Python 和 Ruby 脚本之间进行通信 但是 我们有 mmap 这是我的问题 我可以使用 mmap 做同样的事情 进程之间通信 吗 与物理文件相比 mmap 能给我们带来什么优势 加速 两个进程之间通信的最简单方法是什么
  • Scala:类型注释使尾递归检查失败

    我向此模式匹配添加类型注释只是为了我自己的理解 annotation tailrec def run A io IO A A io match case Return a gt a case Suspend r gt r case Flat
  • 如何制作像类一样的“可变”向量

    我正在尝试创建充当多维向量的类 它不必做任何花哨的事情 我基本上想要一个 容器 类 foo 我可以通过 foo x y z 访问元素 现在我还需要 foo x y 和 foo x 类似的类 这让我思考以下 更一般的 问题 有没有一种方法可以
  • 如何切换被单击的元素并隐藏所有其他元素?

    我想隐藏任何可见的跨度元素 如果有 并在单击元素时再次切换它 div class item a href element1 a span span1 span br div div class item a href element2 a
  • 缓存优先 Service Worker:如何绕过更新资产的缓存?

    这是场景 您有一个当前通过软件缓存的站点 您部署一个新版本 其中包含带有缓存清除版本的更新软件 然后该公司宣布了新功能 然而 人们访问该站点时 即使软件崩溃 它仍然会提供以前的缓存 同时在后台更新其缓存 因此 前来寻求新功能的访问者看不到它
  • Jqgrid + CodeIgniter

    我试图让 jqgrid 与 codeigniter 一起工作 但我做不到 我只想以 json 格式显示表中的数据 但什么也没发生 但我不知道我做错了什么 我看不到包含我正在调用的内容的表格 我的控制器 class Grid extends
  • Angular 2:找不到名称“订阅”

    尝试设置属性的类型时出现错误Cannot find name Subscription 我从哪个包导入它 import Component OnDestroy OnInit from angular core import Activate
  • 如何使用协程中的值或告知何时完成[重复]

    这个问题在这里已经有答案了 例如 当使用 WWW 类调用 Web API 时 我想要返回一个值或有关何时完成及其状态的一些反馈 那么 让我向我展示一种巧妙的方法吧 这里我们创建一个 IEnumerator 它接受一个 Action 在我们的
  • 具有传输和消息安全性的 WCF 绑定

    我正在从事一个大项目 该项目广泛使用WCF用于不同类型的通信 作为新要求的一部分 我们需要与SOAP由第三方开发的 Web 服务 他们的服务是用Java开发的 有两个安全要求 它需要基本身份验证超过运输和 该消息必须是使用 X509 证书签