代码改变世界

WCF 第八章 安全 系列文章

2011-07-01 07:55  DanielWise  阅读(2869)  评论(2编辑  收藏  举报

上一个系列主要讲述WCF中的服务是如何寄宿的,寄宿环境等等。包括IIS, WAS, NT Service, 桌面应用程序,控制台应用程序。当前系列将描述WCF中最关键的环节:安全。没有安全WCF将不复存在,也就没有价值。我们将深入讨论WCF中安全的实现形式以及具体内容。

[第1篇] 安全

很难想象在当今环境的商业应用中有比安全还要严重的一个方面。性能和可用性也是主要关注的,但对一些偶尔需要安全(事实上,相比带来的价值来说可能更加有害)的应用程序是没有太多价值的。当我们使用在线银行服务时,我们相信应用服务提供商已经尽他们最大努力来阻止滥用,数据崩溃,攻击以及将我们的财务信息暴露给其他人。当我们向使用者提供基于WCF的服务时也有同样的要求。

[第2篇] 基于证书的加密

证书以及它们所提供的声明是一个安全的提供身份的通用方法。它们提供了一个鲁棒性的安全架构可以让它们非常适合加密和认证。WCF使用X.509工业标准证书,它被很多技术提供商广泛采用。互联网浏览器和互联网服务器使用这个标准来存储加密密钥并在网络上为SSL通信签名。证书提供强加密而且很容易理解和文档化。

[第3篇] 传输层安全

传输层安全,正如它的名字所暗示的,在客户端和服务端的通信信道中提供安全。这个层次的安全可以包含加密和认证。信道栈(绑定)确定加密类型以及可用的认证协议。

[第4篇]客户端认证

一个服务的客户端认证是通过向服务提供一系列信赖的声明。声明可以是任何形式,只要客户端和服务端理解这个格式并信赖它的来源就可以。

[第5篇] 服务身份

当在客户端和服务端之间创建一个安全通信信道时,客户端可以通过本章描述的很多方法来与服务端认证。客户端可以使用用户名/密码认证,Windows认证或者证书认证。然而同等重要的是认证服务端。如果一个客户端将要与服务端交换敏感信息,那么服务端认证就和客户端认证一样重要。这么做如果失败就会在服务端发生互联网上流行的欺骗诈骗。为了保护以防止这种事情发生,WCF在通过传输层安全创建一个安全的通信信道前需要检查服务身份。

[第6篇]消息层安全

消息层安全通过在通过传输通道发送消息之前对消息进行加密和签名来保证消息的机密性。在这种方式下,只有那些知道如何对消息进行解密的组织才可以读取它们。

[第7篇] 使用Windows集成安全的安全服务

在这一部分,我们将主要介绍当向一个组织或者其他安全环境部署和使用服务的问题以及遇到的情况。由于服务可能被宰一个Windows网络的另外机器调用,我们可以利用非基于因特网部署原有的共享认证和授权系统的优势。

[第8篇] 确定替代身份(上)

生成的WCF代理支持一个确定调用服务的替代身份架构。这对很多场景都很有用。例如,如果一个客户端应用支持多个用户身份,这些身份可以通过客户端代理在运行时应用,所以服务可以确定当前用户应该执行哪个动作。

[第9篇]确定替代身份(中)-使用AzMan认证

Windows 认证管理器(AzMan)是一个向应用程序提供基于中央(因此容易维护)角色授权服务的系统,包括WCF,基于定义在认证中心的权限。AzMan使用一个基于MMC实例来管理认证中心和相关访问级别。认证管理器运行时是与物理授权中心独立的,物理授权中心可能基于SQL Server, 活动目录,ADAM或者XML,取决于操作系统使用的类型。

[第10篇] 确定替代身份(下)-模仿用户

默认情况下,WCF服务使用宿主服务执行时的身份信息来访问本地和远程资源。由服务负责认证调用方来确定它们是谁,然后执行授权检查来保证它们可以访问其他资源(将使用本地身份来访问)。当运行接收Windows权限信息的服务时,我们有其他选择,比如模拟用户。

[第11篇] 因特网上的安全服务(上)

这部分将关注因特网上的安全服务。图片8.6显示了一个通过因特网访问服务的Windows应用程序。这个图片开始重点突出微软公司的软件 + 服务模式,就是你在桌面运行客户端应用程序且可以访问因特网上的服务。这些类型的应用程序需要管理来自因特网的用户的架构。这包括验证并授权来自因特网的用户。这个类型的应用的典型方式是使用一个数据库来存储用户名,密码和角色。

[第12篇]WCF Membership Provider

ASP.NET 是自.NET 1.x 就已经有的技术,利用IIS+ASP.NET 搭建的网站已经有很多。针对IIS+ASP.NET 的网站模型也有很多案例,通过现在的搜索服务我们可以很轻易的获取这些内容。

[第13篇] 因特网上的安全服务(下) 其他认证模式

ASP.NET 基于角色认证允许开发人员执行基于角色的授权检查。它也使用一个提供者模型,它将用于角色存储的细节从应用程序代码中抽象出来。ASP.NET 中有很多角色提供者模型,包括SqlRoleProvider, WindowsTokenRoleProvider和AuthorizationStoreRoleProvider.

[第14篇] 日志和审计

就像你在这一章已经看到的那样,有很多选项来设置WCF服务和客户端应用的安全。假设这些设置都是可行的,那么对认证和授权的问题进行诊断也是非常重要的能力。额外的,创建审计追踪来记录对安全架构调用的能力对很多行业,比如银行业和健康护理行业以及那些想要保持与萨班斯-奥克斯利法案和其他监管规定一致的公司是非常重要的。

[第15篇]总结

安全对应用程序来说很明显不是一个容易提供的”特性”, 尤其是当它们在多个不同的程序中,机器上甚至是公司描述时。忽略一个适当的安全策略和结构的惩罚是严厉的,与故障相关的公众信任的丧失是很困难,如果不可能来逆转的。因此,谨慎小心地考虑哪里,何时以及如何应用安全策略应该永远不被忽视。