最近抽时间研究了一下WCF技术,发现其中比较难于掌握的部分就是关于安全认证的配置,现在把相关问题整理一下,希望能对大家有些帮助,也做一个学习总结。
1、WCF配置文件注释,这个网上很多,我也提供出来吧,初学最重要的是能弄懂这些配置都是用作什么的,否则会一头雾水,有一个细节不对可能导致程序执行失败。请参见:http://www.cnblogs.com/zhl7522/archive/2008/02/03/1063716.html,也可以使用VS2008自带的WCF Service Configuation Editor配置工具进行配置。
2、数字证书的生成与配置,这方面网上也有很多资料说明,最重要的是winhttpcertcfg.msi这个证书授权工具,很多时候都是因为证书访问权限问题而导致程序执行出错。
常用授权命令:winhttpcertcfg -g -c LOCAL_MACHINE\My -s SubjectKey -a ASPNET或Everyone
证书生成工具:makecert.exe或用Microsoft证书服务申请颁发证书,这个服务如果没有安装可以在控制面版中的添加删除组件里去安装。
3、WCF安全主要包括四方面:
数据完整性( Integrity ): 保证数据在客户端到服务器端之间不会被它人修改,可以通过数字签名来实现。
数据机密性( Confidentiality):保证数据在客户端到服务器端之间不会被它人看到,即使看到了也是一串连神都看不懂的密文。通过加密解密来实现
验证( Authentication ) :验证客户端和服务器的身份。
授权 ( Authorization ) :客户通过身份验证后,对其进行授权,即哪些操作可以执行,哪些操作不可以执行。
WCF提供了强大的功能来支持安全机制,那么我们来看看wcf如何实现上面提到的4点。
数据完整性和机密性通过在wcf服务端配置证书来实现传输消息的加密和解密。
验证。WCF提供了多种验证机制,如:windows帐户验证,UserName/Password验证和Certificate方式的验证。
授权。WCF同样提供多种方式来支持授权机制。如:基于Windows角色来实现,基于Asp.net角色来实现,另外wcf还允许你自定义你的验证和授权机制,有很大的灵活性。
4、关于学习过程,个人建议先看一下雨痕的文件,里边对WCF的基础讲解的比较好,http://www.rainsts.net/article.asp?id=283,如果想深入学习的话,还是多做一些例子,虽然过程是坚难的,但收获是很大的,网上所提供的学习例子可能大多数都要自己去进一步完善,而且开发过程中每个人的机器环境都不一样,可能会导致很多意想不到的问题,如防火强的配置导至站点不能访问,Apache占用Https协议的443端口等等。
5、关于实例代码我会抽时间整理出一份放上来供大家学习参考用。