论坛首页 Java企业应用论坛

杭州QCon总结–开放平台

浏览 1503 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-01-09  

开放平台这个话题其实很大,涉及到多方面,比如平台搭建、安全、流量控制与计费、服务端性能优化等;这次QCon会议中,人人网介绍了开放平台授权与验证,飞信介绍了资源分配与控制策略,淘宝介绍了Web请求异步化处理,腾讯介绍了Open API的设计;下面是我之后的一些总结;

1、授权与验证

还是拿网上最流行的例子吧,网站A提供图片存储服务,网站B提供在线打印服务;现在用户想使用网站B提供的在线打印功能打印存储在网站A上的图片,怎么办呢?通常有两种做法:

  • 用户先从网站A把要打印的图片下载到本地,然后再上传到网站B,最后通过网站B完成打印;
  • 用户从网站B上直接访问存储在网站A上的图片,然后打印;

两种做法对比一下,显然是第二种用户体验更好,但有更多的问题需要解决:

  • 网站B如何访问用户存储在网站A上的图片,即如何访问网站A提供的服务?
  • 网站A如何保证用户数据的安全性?如防止用户1去打印用户2的图片?

直接进入主题吧,关于安全性,即授权与验证,经历了三个阶段:

1) HTTP基本认证

HTTP基本认证是一种用来允许Web浏览器,或其他客户端程序在请求时提供以用户名和口令形式的凭证,详细介绍可以看维基百科上的介绍;

其大致流程是:

  • 客户端请求一个需要HTTP BASIC身份认证的页面,但是没有提供用户名和口令;
  • 比如在浏览器中访问链接:http://api.minicloud.com.cn/statuses/friends_timeline.xml

  • 服务端返回一个401的HTTP状态,如
  • 1 HTTP/1.1 401 Unauthorized
    2 Server: nginx/1.0.4
    3 Date: Wed, 02 Nov 2011 02:26:23 GMT
    4 Content-Type: application/xml; charset=UTF-8
    5 Transfer-Encoding: chunked
    6 Connection: keep-alive
    7 WWW-Authenticate: Basic
    8 Vary: Accept-Charset, Accept-Encoding, Accept-Language, Accept
    9 Accept-Ranges: bytes
  • 客户端接到响应,提示用户并提示输入用户名和口令,并将用户名和口令以Base64加密后加到请求头中,重新发送请求到服务端,如
  • 1 GET /statuses/friends_timeline.xml HTTP/1.1
    2 Host: api.minicloud.com.cn
    3 User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0.1) Gecko/20100101Firefox/5.0.1
    background-image: none !important; background-color: initial !important; float: none !important; vertical-align: baseline !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-size: 1em !important; direction: ltr
    论坛首页 Java企业应用版

    跳转论坛:
    Global site tag (gtag.js) - Google Analytics