WCF安全概念涉及到很多知识,完全超出我个人的预期。我最近一直在关注这个方面的内容,最大的感受就是WCF安全机制非常的复杂,或者说安全机制强大。WCF安全编程一直是一个重要的领域,因为安全的问题不单单针对WCF服务,还要客户端的配合。
【1】安全验证模式:
我们先来简单回顾一下WCF身份验证机制,WCF支持的6种身份验证机制可以参考下图:
【1.1】Transport安全模式与客户端验证方式:
绑定协议和客户端验证方式在transport模式下的对应关系:
绑定/客户端凭据 | None | Windows | Username | Certificate |
---|---|---|---|---|
BasicHttpBinding | Yes (Default) | Yes | Yes | Yes |
NetTcpBinding | Yes | Yes (Default) | No | Yes |
NetPeerTcpBinding | No | No | Yes (Default) | Yes |
NetNamedPipeBinding | No | Yes (Default) | No | No |
WSHttpBinding | Yes | Yes (Default) | Yes | Yes |
WSFederationHttpBinding | N/A | N/A | N/A | N/A |
WSDualHttpBinding | N/A | N/A | N/A | N/A |
NetMsmqBinding | Yes | Yes (Default) | No | Yes |
【1.2】消息安全模式与客户端验证方式:
绑定/客户端凭据 | None | Windows | Username | Certificate |
---|---|---|---|---|
BasicHttpBinding | Yes (Default) | Yes | Yes | Yes |
NetTcpBinding | Yes | Yes (Default) | No | Yes |
NetPeerTcpBinding | No | No | Yes (Default) | Yes |
NetNamedPipeBinding | No | Yes (Default) | No | No |
WSHttpBinding | Yes | Yes (Default) | Yes | Yes |
WSFederationHttpBinding | N/A | N/A | N/A | N/A |
WSDualHttpBinding | N/A | N/A | N/A | N/A |
NetMsmqBinding | Yes | Yes (Default) | No | Yes |
【2】代码结构概要:
这里我把代码整体上按照安全模式和消息模式来分,然后是客户端身份验证方式,在就是绑定协议,做个分类的依据。这里我给出主要的是无身份验证模式None,Basic,自定义用户名密码,和自定义X509证书,Window,Certificate验证方式的Demo代码结构。目前给出的是大概的结构如下:
【3】文章结构概要:
文章基本的组织接口是介绍每种Demo代码的具体的实现原理和过程,每个文章会详细介绍关键的实现步骤,和应该注意的细节。对代码进行讲解,最后会给出可执行代码供大家参考。应该在10篇左右,因为针对一种安全机制,我就只实现一个绑定协议,例如是WSHTTPBinding的实现,basicHTTPBinding和NetTcpBinding我就不给出了,大家有兴趣的可以拓展,根据实际学习或者项目需要自己实现。代码文章的初步规划如下:
【4】总结
(1)《WCF分布式安全开发实践》主要针对的是一些常见的验证方式的介绍,并给出可以执行的实例代码。
(2)应用相对较少的方式,如IssuedToken方式,我在这个系列里就不给出介绍了,如果需要可以再对这个系列文章做个调整。代码结构和文章结构是作个参考,实际可能根据大家的意见做个修改。
(3)文章的顺序也只是个参考,总体是先从Transport开始,然后介绍Message安全模式下的各种应用。
但是由于时间关系,我今天的第一个实例代码会先从基于Message安全模式的用户名密码验证方式开始,因为已经写好很久了,传输安全模式相对复杂,下一篇会在介绍,时间紧迫我抓紧时间把基于Message安全模式的用户名密码验证方式文章写完,发布出来。不然没法睡觉~这个介绍文章我就分类到首页的新手区。
有兴趣学习WCF安全编程的朋友,可以关注这个系列,留言一起交流~
参考文章:
1. WCF分布式开发步步为赢(14):WCF安全编程--基本概念
【老徐的博客】
【作 者】:Frank Xu Lei
【地 址】:http://www.cnblogs.com/frank_xl/
【中文论坛】:微软WCF中文技术论坛
【英文论坛】:微软WCF英文技术论坛