APP 请求验证

来源:互联网 发布:淘宝差评卖家会退款吗 编辑:程序博客网 时间:2024/05/19 17:10

http://blog.ubooksapp.com/

前一段时间,在刷博客的时候发现一个挺有意思的应用(美团图书馆),突然觉得自己还真有些这方面的需求,所以打算复制一个app出来跟身边的同学们一起玩玩,自觉该会是一件蛮有意思的事,哈哈。

开始想法比较简单,首先搭建restful web services, 已经构想出来的REST API并不多, 如:

    POST ../api-v1/user/login    POST ../api-v1/user/register    POST ../api-v1/books/share    GET  ../api-v1/books    GET  ../api-v1/user/12345

给人的感觉相当舒服,API 设计参考 Learn REST: A RESTful Tutorial, API的实现采用了Phalcon, 这是一个采用C语言扩展编写,针对高性能优化的PHP5框架。

Authenticating REST Requests

一般 REST 请求不允许匿名,每次请求都需要携带身份验证信息,通过系统验证后才能成功请求。

在用户成功登录系统后,客户端会保存一个Secret Access Key,这个Access Key由服务器生成,和客户端共享,是一个用户身份标识,通常可以是User ID。

当客户端发起请求时,先生成signature,然后将Access Key 和 signature添加到请求的头部信息中去,再发送至服务器。signature由多个头部信息连接后通过加密得到,例如:

base64(hmac-sha1(VERB + "\n"                 + CONTENT-MD5 + "\n"                 + CONTENT-TYPE + "\n"                 + DATE + "\n"                 + CanonicalizedSelfHeaders + "\n"                 + CanonicalizedResource))

得到请求头部类似:

PUT /quotes/nelson HTTP/1.0Authorization: AWS 44CF9590006BF252F707:jZNOcbfWmD/A/f3hSvVzXZjM2HU=Content-Md5: c8fdb181845a4ca6b8fec737b3581d76Content-Type: text/htmlDate: Thu, 17 Nov 2005 18:49:58 GMTX-Amz-Meta-Author: foo@bar.comX-Amz-Magic: abracadabra

服务器接收到请求,对signature进行验证比较,即使用与客户端相同的加密方法生成一个signature与接收到的signature进行比较,如果相同,则身份认证通过,否则,返回错误信息。

AWS Authenticating REST Requests
REST API Login Pattern


0 0
原创粉丝点击