关于新浪云存储的权限问题Authorization
来源:互联网 发布:淘宝抵用券使用说明 编辑:程序博客网 时间:2024/06/05 09:33
最近在项目中用到的新浪云存储。可以把项目中涉及到的资源放到云里面存储,目前市面上比较多的,有阿里,新浪,百度,当然还有一些小众的云存储平台,比如说七牛,op等。
在官网上能够下载到各种语言的api.里面好多东西虽然在api里面已经给了实现,但是感觉不是很全面。
比如说签名:原始文档中提及到的三种方法(签名算法):
签名算法ssig:
三种认证方式如下:
- HTTP Request Header(Authorization)方式
- URL签名认证方式
- Cookie认证方式
对于新浪里面的私有资源的获取方法,新浪的api里面给出的可以直接使用的方法只有URL认证方式。但是这种认证方法不够安全,相比之下httprequest认证authorization的方法比较安全,最近尝试了好多方法;
1, www-authorization认证,这是种简单的认证,需要用户输入用户名密码,然后把authorization的内容传到request header。
客户端请求
GET /private/index.html HTTP/1.0
Host: localhost
服务器端响应:
HTTP/1.0 401 Authorization Required <== 状态码
Server: HTTPd/1.0
Date: Sat, 27 Nov 2004 10:18:15 GMT
WWW-Authenticate: Basic realm=”Secure Area” <==必要值,realm的值可自定义
Content-Type: text/html
Content-Length: 311
2, header函数:添加authorization,可以成功,但是遗憾的是添加进入response header里面,仍旧不能获得权限,403错误
- 客户端发送http请求
- 服务器发现配置了http auth,于是检查request里面有没有"Authorization"的http header
- 如果有,则判断Authorization里面的内容是否在用户列表里面,Authorization header的典型数据为"Authorization: Basic jdhaHY0=",其中Basic表示基础认证, jdhaHY0=是base64编码的"user:passwd"字符串。
- 如果没有,或者用户密码不对,则返回http code 401页面给客户端
- 标准的http浏览器在收到401页面之后,应该弹出一个对话框让用户输入帐号密码;并在用户点确认的时候再次发出请求,这次请求里面将带上Authorization header
一次典型的访问场景是:
- 浏览器发送http请求(没有Authorization header)
- 服务器端返回401页面
- 浏览器弹出认证对话框
- 用户输入帐号密码,并点确认
- 浏览器再次发出http请求(带着Authorization header)
- 服务器端认证通过,并返回页面
- 浏览器显示页面
3, curl_setopt,这是网上说的比较多的,curl函数能轻易的实现解析网页,实现读取资源的功能。
请求示例:
curl -v -H "Range: bytes=0-1024" -H "Date: Sat, 20 Nov 2286 17:46:39 GMT" -H "Authorization: SINA <access_key>:<ssig>" "http://<Your-Bucket-Name>.sinacloud.net/<Object-Name>?formatter=json"
应用举例:
标准示例:
GET /my_bucket/path/to/my/file.txt?formatter=json HTTP/1.1Host: sinacloud.netDate: Sun, 1 Jan 2006 12:00:00 GMTAuthorization: SINA AccessKey:ssigRange: bytes=100-2048
响应:
HTTP/1.1 206 Partial Contentx-amz-id-2: idx-amz-request-id: request_idDate: dateLast-Modified: Sun, 1 Jan 2006 12:00:00 GMTETag: "etag"Content-Length: lengthContent-Type: typeConnection: closeServer: SinaS3x-amz-meta-foo: foo_value...file_content...
其他的实现具体还是要看情况决定的。基本上看着api文档中的一些类方法就差不多够了。
- 关于新浪云存储的权限问题Authorization
- 关于Oracle存储过程执行权限问题的解决
- 存储过程的权限问题
- 应用的存储权限问题
- 关于新浪微信瘦身的问题
- 新浪云存储SCS的使用
- Oracle关于创建存储过程权限问题以及带参数的游标的范例
- 关于权限不够的问题
- android关于权限的问题
- 关于访问权限的问题
- 关于android的权限问题
- 关于mysql权限的问题
- 关于应用权限的问题
- 关于安卓录屏的权限问题
- 关于memcache权限的问题
- 关于mysql权限的问题
- 关于定位权限的问题
- mysql执行存储过程权限的问题
- POJ 题目2377 Bad Cowtractors(最大生成树)
- 两个数的最大公约数
- 1035. Password (20)
- 1006_换个格式输出整数 (15)
- python对mysql数据库访问的MySQLdb
- 关于新浪云存储的权限问题Authorization
- 1036. Boys vs Girls (25)
- Java程序中的toString方法
- 动态代理(1)
- win7硬盘安装ubuntu经验
- EularProject 67: 三角形数字矩阵的最大路径
- 1037. Magic Coupon (25)
- nagios配置
- scala的协变与逆变、上界与下界