为了演示方便,我写了如下一个针对Binding类型的扩展方法ListAllBindingElements,该方法会将绑定所有的绑定元素的类型打印出来。接下来,我们就利用这个扩展方法应用了那些常见的绑定,看看最终决定安全传输的是哪些绑定元素。
1: public static class BindingExtension
2: {
3: public static void ListAllBindingElements(this Binding binding)
4: {
5: int i = 0;
6: foreach (var bindingElement in binding.CreateBindingElements())
7: {
8: Console.WriteLine("\t{0}.{1}", ++i, bindingElement.GetType().FullName);
9: }
10: }
11: }
一、BasicHttpBinding
我们先来看看对于三种典型安全模式(Transport、Message和Mixed)下的BasicHttpBinding具体由哪些绑定元素构成,为了我编写了如下的程序。
1: BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
2: Console.WriteLine("Transport:");
3: binding.ListAllBindingElements();
4:
5: binding = new BasicHttpBinding(BasicHttpSecurityMode.Message);
6: binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;
7: Console.WriteLine("Message:");
8: binding.ListAllBindingElements();
9:
10: binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
11: Console.WriteLine("Mixed:");
12: binding.ListAllBindingElements();
输出结果:
1: Transport:
2: 1.System.ServiceModel.Channels.TextMessageEncodingBindingElement
3: 2.System.ServiceModel.Channels.HttpsTransportBindingElement
4: Message:
5: 1.System.ServiceModel.Channels.AsymmetricSecurityBindingElement
6: 2.System.ServiceModel.Channels.TextMessageEncodingBindingElement
7: 3.System.ServiceModel.Channels.HttpTransportBindingElement
8: Mixed:
9: 1.System.ServiceModel.Channels.TransportSecurityBindingElement
10: 2.System.ServiceModel.Channels.TextMessageEncodingBindingElement
11: 3.System.ServiceModel.Channels.HttpsTransportBindingElement
我们来具体分析一下最终在不同安全模式下输出的绑定元素列表。对于Mixe安全模式下对服务的验证、消息签名和加密都是基于Transport安全,Message安全仅仅用于对客户端的认证。所以对于Transport和Mixed模式,消息保护都是通过HttpsTransportBindingElement
来实现。从名称就可以看出来,这是一个基于HTTPS的传输绑定元素,这也再次印证了BasicHttpBinding通过HTTPS实现Transport安全模式的说法。asp.net利用.net控件实现下拉导航菜单的制作
对于Message安全模式的三个绑定元素中,很明显和安全传输相关的是AsymmetricSecurityBindingElement
。从名称我们就知道,该绑定元素通过非对称加密
的
方式提供签名和加密的实现。具体来说,对于请求消息来说,发送方使用自己的私钥对消息进行签名,使用接收方的公钥对消息进行加密。接收方采用发送方的公钥
验证签名,用自己的私钥对消息进行解密。这也是为什么在选择了Message安全模式的情况下,基于用户名/密码的客户端凭证不被支持的真正原因。
分享到:
相关推荐
- `Message`安全模式则在消息级别加密数据,提供更强的保护。 **性能优化**: - 使用`MaxReceivedMessageSize`属性限制接收消息的大小,防止DoS攻击。 - 调整缓冲区大小和批处理大小以优化性能。 - 开启会话模式以...
在.NET开发环境中,TreeView控件是一种常用的用户界面元素,它以树形结构显示数据,常用于网站或桌面应用中展示层级关系的数据。本教程将详细讲解如何使用TreeView控件来绑定SQL数据库中的数据,以“treeview”表为...
5. `<button>`:自定义按钮,可以绑定JavaScript事件,实现更复杂的功能。 在实际案例中,我们需要考虑表单验证,这通常通过HTML5的内置验证(如`required`属性)或JavaScript实现,以确保用户输入的数据有效且符合...
服务通过绑定来确定如何与外部世界通信,而绑定由多个元素组成,如传输(例如HTTP、TCP)、编码(例如SOAP、二进制)和消息协议(例如WS-Security)。 创建一个WCF服务通常包括以下步骤: 1. **定义服务合同**:...
双向数据绑定是WPF中一种强大的特性,它允许用户界面(UI)元素与应用程序的后台数据模型之间保持同步。标题提到的问题是当绑定到一个没有公开set方法的属性时,在.NET Framework 4.5和.NET Core这两个不同框架下的...
虽然实现完整的动画功能可能较为复杂,但我们可以从简单的淡入淡出效果开始,通过改变元素的透明度来实现。这涉及CSS样式操作和定时器的使用。 最后,了解jQuery如何处理Ajax请求。jQuery的`.ajax()`函数使得异步...
多态性是通过虚函数(在C++中)或接口(在Java中)实现的,但在C语言中,我们可以使用函数指针和动态绑定来模拟这一概念。每个类可以有一个函数指针数组,其中每个元素对应一个虚函数。在运行时,通过对象的类型信息...
如果使用WPF,开发者可能会创建一个或多个UI元素的动画序列,通过`Storyboard`和`Timeline`类控制动画的播放,以实现更复杂和流畅的视觉体验。 在描述中提到这个屏幕保护程序是“简单但实用”的,可能意味着它没有...
2. **数据绑定**: WPF的强大之处在于其数据绑定机制,允许UI元素直接绑定到应用程序的数据源,实现视图和模型的自动同步。 3. **控件**: WPF提供了一系列内置控件,如TextBox、Button、ListBox等,可以满足各种UI...
总的来说,DICOM医学图像数据接口的Java实现涉及了医学图像数据的解析、处理、存储和传输,需要对DICOM标准、Java编程以及可能的图像处理库有深入的理解。通过合理的编程和库的使用,可以构建功能丰富的医学图像应用...
首先,理解“屏蔽某些元素”意味着在列表框中不显示特定项目,可能是出于隐私保护、数据过滤或其他设计考虑。在编程实现中,这通常涉及到遍历列表并决定哪些项应该被显示,哪些应该被隐藏。例如,在Java中,你可以...
3. **事件处理**:jQuery 的事件处理函数如 `.on()` 可以绑定各种事件,例如点击(click)、焦点获取(focus)等。在腾讯微信广播中,可能需要监听用户的行为以触发广播消息。 4. **Ajax交互**:为了实现广播功能,...
在这个示例中,`activeArea`元素的`oncontextmenu`事件被绑定到`customContextMenu`函数。这个函数首先检查是否支持`event.preventDefault()`,如果支持则调用它;如果不支持(如在IE中),则将`event.returnValue`...
这些可以通过绑定元素来配置,如Transport、Message或TransportWithMessageCredential等安全模式。同时,WCF也支持跨服务的分布式事务,可以与.NET事务协调器(MSDTC)集成,确保数据一致性。 ### 5. 消息队列与...
4. 数据绑定:在VB中,可以通过控件的数据绑定功能将数据库字段与界面元素关联,实现数据的实时显示和编辑。例如,可以将书名绑定到一个文本框,当查询结果改变时,文本框内容自动更新。 5. 查询和过滤功能:系统应...
消息发送与接收功能可能需要一个消息模型,包括消息实体类、发送和接收接口以及实现。开发者可能会使用ArrayList或HashMap等数据结构存储消息,同时利用session或cookie来跟踪用户状态,确保消息的正确投递。此外,...
用户是权限的主体,角色是权限分配的载体,目标是受保护的资源,访问模式定义了对资源的访问方式,而操作则实现了资源与访问策略的绑定。 2. **资源控制** - 资源是系统需要保护的对象,具有层次关系和包含关系。...
在这个项目中,wxPython被用来创建好友列表、聊天窗口以及消息输入框等元素。 2. **Socket编程**:Socket是网络编程的基本组件,用于在不同计算机之间建立连接并交换数据。在QQ群聊应用中,socket负责处理客户端...
开发者可以通过阅读这些QML文件来了解如何构建复杂的界面,并学习QML语言的各种特性和技巧,如状态管理、数据绑定、动态加载和组件重用等。 总结来说,这个项目是一个使用Qt和QML技术来模仿360安全卫士9.2界面的...
3. CSS样式:为了使软键盘看起来美观且易于使用,需要掌握CSS来控制布局、颜色、字体等样式属性。Flexbox或Grid布局可以用来创建整齐的键盘网格,而CSS动画可以增加交互性。 4. 字符编码与输入处理:当用户点击软...