专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Open API

非保险传输协议前提下,Open API安全协议设计

发布时间:2011-07-03 06:57:11 文章来源:www.iduyao.cn 采编人员:星星草
非安全传输协议前提下,Open API安全协议设计

本文考虑:在不使用安全传输协议的前提下,Open API调用的安全问题。

    • 角色定义
    • 处理流程
      • 调用方消息发送流程
      • 发布者消息接收流程
      • 调用结果返回流程
    • 代码设计
      • 调用方代码设计
      • 发布者代码设计

作者:刘海龙
微博:[http://weibo.com/liuhailong2008]
博客:[http://blog.csdn.net/stationxp]

角色定义

  • 发布者:Open API的发布者。
  • 调用方:Open API的调用者。

处理流程

调用方消息发送流程

  1. 生成一个UUID,称为_seed
  2. _seed用自己的私钥签名,得到_sign,提供给发布者认证身份。
  3. _seed用发布者的公钥加密,得到_key
  4. 使用_seed对消息_msg对称加密,得到密文_msgx
  5. _sign``_key``_msgx拼接,进行Base64压缩(可选),得到_body
  6. 发送_body,执行API调用。

发布者消息接收流程

  1. 得到_body,拆分为_sign_key_msgx
  2. 通过调用着uri到注册库中找到调用者公钥_invkerpk
  3. 使用_invkerpk解密_sign,得到_seed1
  4. 使用自己对私钥揭秘_key,得到_seed2
  5. 比对_seed1_seed2,如果一致,确认得到_seed;否则处理过程结束。
  6. 使用_seed_msgx解密,得到明文消息。

调用结果返回流程

  1. 返回结果为预先设定的消息代码。
  2. 采用安全方式传输,则使用调用者的公钥加密。

代码设计

调用方代码设计

interface Invoker{
    void setEndPoint(InvokerEndPoint endPoint);
    /**
    * 通过调用EndPoint实现。
    */
    Response get(String api,Object…params);
    Response post(String api,Object…params);
 }
 interface InvokerEndPoint{
    Response invoke(Request request);
 }
 /** 装饰模式 */
 interface SecurityInvokerEndPoint{
    Response invoke(Request request);
 }

发布者代码设计

 interface OpenApiFilter{
    void setEndPoint(ExportEndPoint endPoint);
    /**
    * 通过调用EndPoint实现。
    */
    HttpServletResponse process(HttpServletRequest request);
 }
 interface ExportEndPoint{
    Response export(Request request);
 }
 /** 装饰模式 */
 interface SecurityExportEndPoint{
    Response export(Request request);
 }
 interface ExportHandler{
    Response handle(Object...args);
 }
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • 正式开始学习云计算解决办法

    正式开始学习云计算 RT 我是学JAVA的 由于工作需要开始学习云计算 谢谢各位大神帮助 以下是我的观点 云计...

  • 关于云技术,该如何解决

    关于云技术 谁能给我讲讲云计算到底是嘛东西 ------解决方案-------------------- 云计算(英语:cloud computing),是一种基于互联网...

  • 基于命令行的API函数解释执行工具,该如何解决

    基于命令行的API函数解释执行工具 求:基于命令行的API函数解释执行工具。 也就是能执行API函数的外部CMD命令。 如果没有这样...

  • webAPI和socket相比?该怎么处理

    webAPI和socket相比? 现在各大网站都提供其webAPI给开发者开发应用,如微博API等。但webAPI大多需要授权,而且有些功能还会根据授权的...

  • Facebook开放构架,平台圈地竞争升级解决思路

    Facebook开放构架,平台圈地竞争升级 12月13日,Facebook宣布将把开发平台架构开放给其它社交网站: Facebook 资深平台经理Ami Vora日...

  • 计算机视觉的课程安排,该怎么解决

    计算机视觉的课程安排 我想问一下计算机视觉的研究方向的课程安排有哪些???要详细一点的,谢谢各位了!!! ------解决方案---------------...

  • 求FaceBook开发实例解决办法

    求FaceBook开发实例 rt 对OpenAPI开发不了解,想了解一下…… 不知道怎么入手了解。所以想要个实例看看。 ------解决方案--------...

  • opengl要用到几个库解决办法

    opengl要用到几个库 学过opengl的同学们,我刚上手不久,对许多函数还不是很了解,不知道用GL做一些图形程序时要用到哪些库。起初我只...

  • opengl图形旋转与放缩有关问题

    opengl图形旋转与放缩问题 下面是程序代码的一部分,运行结果是图形不能实现绕形心旋转, 请高手指点一下: // Begin a new triangle ...

  • ~注册facebook API key的有关问题.

    ~~~~~注册facebook API key的问题..... 我的一个桌面应用程序,需要向facebook上面上传图片。是不是需要先注册api key才能访问face...

热门推荐: