解决WebService安全性

spring | 2019-09-13 10:02:39

有些项目确实要用到webservices,如多种语言实现的cs系统,还有些公司业务很多,系统间需要互相调用。webservices很简单,他只是一个暴露服务的组件而已,用起来简单,但是用的时候我们需要考虑的是安全性。是的你可以直接des加密返回值。简单粗暴,但是不方便啊,那么一起探讨一下在各种环境下实现webservices安全性。

要解决 XML Web Service 安全性问题我们需要考虑以下问题: 

要达到什么样目?- 仅允许授权用户访问 XML Web Service;禁止他人未经授权擅自查看消息等 
如何达到预期效果?- 网络、传输层、OS、服务或应用 
解决方案中需要什么级别互操作性?- 局部或全局 
那么我们如何确保当今 XML Web Service 安全呢?答案就是:先回答上述问题然后应用保护任何其他 Web 应用时所使用相同技术即: 

保护连接安全 
对交互操作进行身份验证和授权 
正如您下面将要了解到这些技术提供了多种选择您可以将这些选择结合起来以获得额外效果例如可以将防火墙和 XML Web Service 起使用从而根据客户端身份以及为他们所建立相应规则来限制对某些功能(思路方法)访问 

让我们先来回顾下保护现有基础结构各种选择了解它们功能 

保护基础结构安全 
个安全 XML Web Service 核心是安全基础结构Microsoft 提供了广泛技术如果把这些技术和总体安全保护计划结合起来企业就可以有效地保护其 IT 结构安全正确实施规划过程包括: 

详细了解潜在环境危险(例如病毒、黑客和自然灾害) 
对和危险有关安全漏洞后果进行预先分析并制定对策 
在这种理解和分析基础上创建个精心规划实现策略将安全保护措施应用到企业网络各个方面 
保护连接安全 
保护 XML Web Service 安全最简单种思路方法就是确保 XML Web Service 客户端和服务器的间连接安全根据网络范围和交互操作活动配置文件我们可以通过多种技术来达到这目最流行也最广泛使用 3种技术为:基于防火墙规则、安全套接字层 (SSL) 和虚拟专用网络 (VPN) 

如果您确切知道哪些计算机需要访问您 XML Web Service则可以使用防火墙规则将访问限制在已知 IP 地址计算机范围内如果需要限制对专用网络(例如公司 LAN/WAN)中计算机访问并且不用担心将消息内容保留为秘密(加密)那么这种技术非常有用防火墙(例如 Microsoft Internet Security and Acceleration [ISA] Server)可以提供先进基于策略规则这些规则可以根据客户端原始位置或标识对区别客户端提供区别限制当区别客户端访问相同 XML Web Service 上区别功能(思路方法)时这种技术很有用 

安全套接字层可用于在非托管网络(例如 Internet)上建立安全连接SSL 可以对客户端和服务器的间发送消息进行加密和解密通过加密数据您可以防止消息在传送过程中被读取SSL 先对客户端消息进行加密然后将其传送到服务器服务器接收到消息后SSL 将对其进行解密并验证消息是否来自正确发送者(此过程称为身份验证)服务器或者客户端和服务器可能具有证书这些证书用作身份验证过程部分在连接加密顶层提供身份验证功能虽然 SSL 是创建安全通信种非常有效思路方法但应当考虑其性能成本Microsoft XML Web Service 既支持客户端中集成 SSL也支持服务器中集成 SSL 

虚拟专用网络是专用网络扩展它可以连接共享网络或公共网络(如 Internet)VPN 使您可以在两台安全连接计算机的间发送数据VPN 和 SSL 相似但 VPN 是个长期点对点连接这使 VPN 可以高效安全地应用于 XML Web Service但要求建立长期连接并保持运行才能达到这种效果
身份验证和授权 
身份验证:身份验证就是验证标识过程即验证某人(或某物)和其声称人(或物)是否致该人或物称为“当事者”身份验证要求证据称为“凭据”例如客户端应用可以将密码用作凭据如果客户端应用提供正确凭据则认为它和所声称人或物致 

授权:完成对当事者标识身份验证后便可以进行授权了服务器通过检查有关当事者某些访问控制信息(例如访问控制列表 [ACL])来确定访问权限客户端可能具有区别访问级别例如某些客户端可以完全访问 XML Web Service;而其他客户端则只能访问某些操作某些客户端可以完全访问所有数据某些客户端只能访问数据子集而某些客户端只能进行只读访问 

在 XML Web Service 中实现身份验证个简单而直接思路方法是利用信息交换所使用协议身份验证功能对于大多数 XML Web Service 来说这意味着利用 HTTP 身份验证功能将 Microsoft Internet Information Server (IIS) 和 ISA 服务器和 Windows 2000 服务器配合使用能为 HTTP 提供多种身份验证机制集成支持 

基本身份验证 - 使用客户端非安全或半安全标识用户名和密码是以 base64 编码文本发送而该文本易于解码如果凭据能和有效用户帐户匹配IIS 将授予客户端访问 XML Web Service 权限 
SSL 上基本身份验证 - 和基本身份验证相同唯区别在于通信通道被加密从而保护了用户名和密码对 Internet 方案而言这是个很好选择但使用 SSL 会对性能产生很大影响 
简要身份验证 - 使用散列以安全方式传送客户端凭据但是这种思路方法可能不会受到用于构建 XML Web Service 客户端开发人员工具广泛支持如果凭据能和有效用户帐户匹配IIS 将授予客户端访问 XML Web Service 权限 
集成 Windows 身份验证 - 主要用于 Intranet 方案使用 NTLM 或 Kerberos客户端必须属于服务器所在域或者属于服务器域托管域如果凭据能和有效用户帐户匹配IIS 将授予客户端访问 XML Web Service 权限 
SSL 上客户端证书 - 要求每个客户端获取个证书证书被映射至用户帐户IIS 将使用这些证书来授权对 XML Web Service 访问尽管目前数字证书尚未广泛使用但这仍然不失为 Internet 方案种可行选择这种思路方法可能不会受到用于构建 XML Web Service 客户端开发人员工具广泛支持只能通过 SSL 连接使用这种思路方法因此性能可能是个需要考虑问题 


从 XML Web Service 实施者角度来看使用上述任何种身份验证机制都有个好处即无需在 XML Web Service 中进行代码更改在 XML Web Service 的前IIS/ISA 服务器将执行所有身份验证和 ACL 授权检查但是在执行客户端时还需要完成其他些工作客户端应用需要响应服务器身份验证凭据请求 

在 XML Web Service 中进行身份验证其他思路方法包括:使用第 3方服务(例如 Microsoft® .NET Passport 中服务)使用 Microsoft ASP.NET 会话功能或者创建自定义身份验证思路方法 

互操作性 
您可能会发现如今用于 Web 应用安全保护标准技术可以单独使用或组合使用以建立安全 XML Web Service这些技术建立在丰富经验基础的上并且非常有效不过它们并没有在 XML Web Service 体系结构中提供集成解决方案随着 XML Web Service 方案日益复杂(例如跨托管边界以及分布于多个系统或企业中)XML Web Service 实施者需要创建有效但并不提供普遍互操作性自定义解决方案 

为满足这些需要并增强 XML Web Service 互操作性Microsoft 及其合作伙伴正在制定套安全规范标准该规范标准建立于 SOAP 规范标准扩展性机制的上提供集成至 XML Web Service 结构中增强型安全保护功能 

这套安全规范标准核心是 XML Web Service 安全语言 (WS-Security)它为 SOAP 消息提供了 3种增强功能:凭据传送、消息集成和消息保密这些功能自身不能提供完整安全保护解决方案;但 WS-Security 是个构建块它可以和基础结构和其他 XML Web Service 协议结合使用以满足各种应用安全保护要求Microsoft Global XML Web Service 体系结构是 WS-Security 和相关规范标准主要内容它为 XML Web Service 基础结构发展提供框架

登录后即可回复 登录 | 注册
    
关注编程学问公众号