WebService API安全

原创 2015年07月07日 10:55:36

    (本文整理自CSDN讨论帖http://bbs.csdn.net/topics/330212903

第一种方案:使用HTTPS,这个不再详述,读者自查

 

 

第二种方案整理如下:

 

综述 WebService访问API是公开的,知道其URL者均可以研究与调用。那么,在只允许注册用户的WebService应用中,如何确保API访问和通信的安全性呢?本文所指的访问与通信安全性包括:

(1)   访问安全性:当前访问者是注册合法用户。

(2)    通信安全性:客户端与服务器之间的消息即使被第三方窃取也不能解密。

0基本思路:
1)注册用户登录时使用RSA加密,Web API调用参数使用DES加密(速度快),Web API调用中包含一个身份票据Ticket
2Web服务器保存当前TicketSession,包括:TicketDES加密矢量、注册用户基本信息。

1 WebService身份验证
    确保注册用户的访问安全,需要如下步骤:1)产生一个当前客户端机器票据(Ticket);2)请求服务器RSA公钥(RSAPublicKey);3)使用RSA加密登录口令及发布DES加密矢量(DESCipherVector)。

1.1  
产生客户端机器票据Ticket
    
一般而言,可以由客户端机器根据自己的MACCPU序列号等唯一标识产生一个本机器的Ticket字符串票据,其目的是:唯一标识当前客户端,防止其它机器模仿本客户端行为。

1.2  
请求服务器公钥RSAPublicKey
    
客户端携带票据Ticket向服务器请求RSA公钥RSAPublicKey。在服务器端,一般采取如下策略产生RSA加密钥匙:
    Application_Start
时产生一个1024或更长的RSA加密钥匙对。如果服务器需要长久运行,那么Application_Start产生的RSA可能被破解,替代方案是在当前Session_Start时产生RSA加密钥匙对。
    
保存当前票据对应的客户帐号对象,即:Session[Ticket] = AccountObject,在确认身份后在填写AccountObject具体内容:帐号、RSA加密钥匙对、DES加密矢量
完成上述步骤后,服务器将RSAPublicKey传回给客户端。

1.3  
加密登录口令及DES加密矢量
    
客户端获得RSAPulbicKey后,产生自己的DES加密矢量DESCipherVector(至少要8位及以上,该加密矢量用于以后的常规通信消息加密,因为其速度比RSA快)。接着,客户端使用RSAPublicKey加密登录帐号、口令及DESCipherVector,连同Ticket,发送到服务器并请求身份验证。登录API格式如下:

       public void Login(string Ticket, string cipherLongID, string cipherPassword)


    
如果验证成功,服务器将当前帐号信息、RSA钥匙、DESCipherVector等保存到会话Session[Ticket]中。


2 WebService
通信安全性

2.1  
加密WebService API参数
   
身份确认后,在客户端调用的WebService API中,必须包括参数Ticket,其它参数则均使用DESCipherVector加密。服务器端返回的消息也同样处理。例如,提交一个修改email的函数定义为:

             public void ModifyEmail(string Ticket, string cipherEmai)


2.2  
客户端解密消息
    
客户端接收到服务器返回消息后,先做解密操作,如果成功则进入下步处理。否则抛出加密信息异常。

2.3  
服务器端解密消息
    
服务器接收到客户提交的API请求后,首先验证Ticket的合法性,即查找Session中是否有该票据以验证客户身份。然后,解密调用参数。如果成功则进入下不操作,否则返回操作异常消息给客户端。

需要指出,如果第三方截获全部会话消息,并保留其Ticket,此时服务器端仍然认可这个第三方消息。但是,第三方不能浏览,也不能修改调用API的参数内容,此时解密参数时将抛出异常。

上面探讨了一个基于加密的WebService访问与通信安全方法,即使第三方获取消息,不能查看原始内容,也不能修改内容,保证了WebService API的安全性。

版权声明:本文为博主原创文章,未经博主允许不得转载。

webservice高级,安全(附带实例)

目录[-] 最简单的安全方案 专门针对WebService的安全方案 对称密钥用户认证 原理 必备软件 创建账户 创建服务器端数字证书 导出证书 创建WebService ...
  • u014386474
  • u014386474
  • 2016年06月07日 09:36
  • 2171

webservice安全验证

大致可分为下面几种: (1)身份验证和属性控制,可以集成Windows验证、域服务器验证、.Net Passport验证。 (2)IP域名限制,只允许特定的ip或者域内机器访问,对非法的请...
  • zouluyifang
  • zouluyifang
  • 2016年05月26日 08:44
  • 632

WebService安全性的几种实现方法【身份识别】

相信很多开发者都用过WebService来实现程序的面向服务,本文主要介绍WebService的身份识别实现方式,当然本文会提供一个不是很完善的例子,权当抱砖引玉了. 首先我们来介绍webservi...
  • yongping8204
  • yongping8204
  • 2013年02月27日 21:51
  • 11531

asp.net C# webservice安全性方案

做项目时,经常会用到WebService来通讯,但WebService发布后为了能调用,一般都通过发布到IIS后调用 的。在IIS里可以通过匿名访问,但这样大家都可能访问,不安全,因此可以提供操作系统...
  • encienqi
  • encienqi
  • 2015年01月24日 10:27
  • 1419

在.net中保证WebService的通讯安全

Web Service现在是很通用的技术,在Web Service我们需要验证用户是否有使用此Web Service的权限,并且要保证在通讯过程中的数据安全,防止数据在传输过程中被网络窃听。首先是如何...
  • firewolffeng
  • firewolffeng
  • 2008年04月20日 23:29
  • 3393

带有安全认证的webservice

直入正题! 以下是服务端配置 ======================================================== 一,web.xml配置,具体不在详述 ...
  • AndrewWQB
  • AndrewWQB
  • 2014年08月01日 17:28
  • 9685

XML WebService 安全篇

      XML Web Service 安全性  鉴于安全性涉及诸多方面(例如身份验证和授权、数据隐私和完整性等),以及 SOAP 规范中根本没有提及安全性这一事实,我们不难理解人们为什么认为答案...
  • luckyspring
  • luckyspring
  • 2007年05月26日 11:21
  • 1925

RESTful Web Service 的安全(token 认证方式)以及性能

可扩展性(scalability)和可用性(availability)  custom token authentication 使用一个独一无二的标志,来标示每一次的数据请求。 这个标志有两种...
  • yinxianluo
  • yinxianluo
  • 2013年11月19日 21:59
  • 7813

Cxf Webservice安全认证

在开发的时候发布webservice,为了安全通常需要安全验证,在CXF中的实现,在这里记录一下。   CXF是啥 我就不介绍了, 开发CXF+Spring的webservice服务: ...
  • AndrewWQB
  • AndrewWQB
  • 2014年08月01日 17:30
  • 7744

浅谈spingmvc 整合CXF +ws-security 实现webservice安全验证

jar包:asm-3.3.1.jar xmlsec-1.5.8.jar xmlschema-core-2.1.0.jar woodstox-core-asl-4.4.1.jar wsdk4j-...
  • chrisjingu
  • chrisjingu
  • 2016年08月31日 15:30
  • 3404
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WebService API安全
举报原因:
原因补充:

(最多只允许输入30个字)