HTTP Authorization

HTTP Authorization 授权流程

在项目中往往需要对访问的请求进行安全认证, 只有认证通过的请求,才能进行相关的操作。
开发者需要颁发 AccessKey 和 SecretKey 给用户 ,用户如果认证授权,将无法调用任何接口。
AccessKey: 用于标识客户身份,在网络请求中会以某种形式传输
SecretKey : 作为私钥形式存储于客户方本地, 不在网络传递,它的作用是对客户方发起的请求进行数字签名,保证该请求是来自指定客户的请求,并且是合法的有效的,
使用 ACCESS_KEY 进行身份识别,加上 SECRET_KEY 进行数字签名,即可完成应用接入与认证授权.

签名格式

Authorization = “Scheme ” + “ ” + AccessKey :Signature;
Signature = Base64(HMAC-SHA1(SecretKey , UTF-8-Encoding-Of( StringToSign ) ) );
StringToSign = HTTP-Verb + "\n" +
               Content-MD5 + "\n" +
               Content-Type + "\n" +
               Date + "\n" +
               URI;

HTTP-Verb 表示请求的方法,如:GET\PUT\POST\DELETE等
Content-MD5 表示请求内容数据的MD5值, 使用Base64编码。当请求的header中包含Content-MD5时,需要在StringToSign中包含,否则用("")替代。
注意:Content-MD5的算法为先对数据做MD5摘要,再将MD5摘要做Base64编码。
Content-Type 表示请求内容的类型.
Date 表示此次操作的时间,且必须为 HTTP1.1 中支持的 GMT 格式。
URI表示用户访问的资源.

Authorization 校验流程

  1. 获取本地access_key以及secret_key;
  2. 获取请求头认证信息Authorization;
  3. 根据颁发给开发用户的 secret_key 计算 Signature, 使用 Base64 和 HMAC-SHA1算法
    signature = Base64(HMAC-SHA1(SecretKey , UTF-8-Encoding-Of( StringToSign ) ) );
    注意:HMAC-SHA1 计算出来的散列值转换成字符串,并且转换成全大写字母,再计算Base64,否则计算不一致;
  4. 将上述信息组装成如下格式 : AccessKey=MACCESSKEYA&Signature=B1JnLMAN%5FBKSKL32FW4IAsklsfb%4kajlfuiJFJH ;
  5. 若Authorization与4一致,则通过认证。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值