首页 > 编程语言 >OAuth1.0的在http请求中的使用方式以及签名算法说明

OAuth1.0的在http请求中的使用方式以及签名算法说明

时间:2023-11-13 20:22:50浏览次数:37  
标签:http URL OAuth1.0 OAuth 算法 签名 signature oauth PHP

1、在http request header的Authorization中,其格式为Authorization: "OAuth oauth_consumer_key="OAuth Consume Key",oauth_token="OAuth Token",oauth_signature_method="HMAC-SHA256",oauth_timestamp="OAuth Timestamp",oauth_nonce="OAuth Nonce String",oauth_version="1.0",oauth_signature="OAuth Signature""

 

2、oauth_consumer_key应该存储在服务器上

 

3、oauth_token应该存储在服务器上

 

4、oauth_signature_method为oauth_signature的签名方法,具体的签名方法实现,参考具体语言。PHP使用的是hash_hmac('sha256', $signatureString, $signatureKey, true)

 

5、oauth_timestamp是当前时间的时间戳

 

6、oauth_nonce是随机字符串

 

7、oauth_signature签名的实现原理是:

(1)拼接http请求大写的方法,例如:HEAD, GET , POST。假设此步骤形成的字符串为httpMethod

 

(2)对请求的URL中的Base String进行URL encode。假设URL是https://api.mg.dev.baby-go.com/rest/V1/categories/5/products?a=1&b=2,那么base URL则为https://api.mg.dev.baby-go.com/rest/V1/categories/5/products,并用步骤(1)中的httpMethod和次步骤中的字符串baseString拼接成string1。PHP中的URL encode方法为:rawurlencode

 

 

(3)将Authorization OAuth后面的键值对,按照键根据ASCII从小到大排序。PHP使用ksort,其他语言参考其具体实现。排序后的字符串用&连接,并用步骤(2)中的string1和次步骤中的字符串拼接成signatureString

 

(4)签名key。签名key由Magento Integration中的Consumer Secret和Access Token Secret,用&拼接成signatureKey

 

(5)签名。签名使用的方法在oauth_signature_method设置,本案例中使用的是HMAC-SHA256,具体的实现参考使用语言。PHP使用的是hash_hmac('sha256', $signatureString, $signatureKey, true);

 

(6)经过HMAC-SHA256签名后的结果如果是二进制数据,需要使用base64 encode

Reference Doc: https://oauth.net/core/1.0/#anchor14

   

标签:http,URL,OAuth1.0,OAuth,算法,签名,signature,oauth,PHP
From: https://www.cnblogs.com/fengliang/p/17830072.html

相关文章

  • 【C++】【图像处理】均值滤波和高斯滤波(低通滤波)算法解析(以.raw格式的图像为基础进行
    1voidmeanFilter(BYTE*image,intwidth,intheight,BYTE*outImg)2{3//均值滤波4intsmth[9];5inti,j,m,n;6BYTEblock[9];78//高斯卷积核初始化9smth[0]=1,smth[1]=2,smth[2]=1,10smth[3]=2,......
  • 网络分层 http,https,arp
    目录网络分层分层OSI七层协议数据上下变化其它模型设备http常见状态码TCPKeep-Alive和HTTPKeep-Alivehttp1.0->1.1->2.0->3.0http1.0http1.1http2.0http3.0whyquic?流量控制拥塞控制重传SACK机制校验和重排序优势网页解析流程......
  • 实现冒泡排序算法
    实现冒泡排序算法#include<stdio.h> voidswap(int*xp,int*yp){   inttemp=*xp;   *xp=*yp;   *yp=temp;} voidbubbleSort(intarr[],intn){   for(inti=0;i<n-1;i++){       for(intj=0;j<n-i-1;j++){       ......
  • Qt - Http协议
    前言本篇文章来给大家讲解QT中的Http协议,Http协议主要用于网络中数据的请求和响应,那么这篇文章将给大家讲解一下这个协议。一、HTTP概述HTTP(超文本传输协议)是互联网上应用最为广泛的协议之一,它定义了客户端和服务器之间进行通信的规则。HTTP是一种无状态的协议,它通过请求-响应......
  • 算法题:约瑟夫环问题
    原题:N个人围成一圈顺序编号,从1号开始按1、2、3…顺序报数,报p者退出圈外,其余的人再从1、2、3开始报数,报p的人再退出圈外,以此类推。请按退出顺序输出每个退出人的原序号。输入格式:输入只有一行,包括一个整数N(1<=N<=3000)及一个整数p(1<=p<=5000)。输出格式:按退出顺序输出每个......
  • 文心一言 VS 讯飞星火 VS chatgpt (134)-- 算法导论11.2 6题
    六、用go语言,假设将n个关键字存储到一个大小为m且通过链接法解决冲突的散列表中,同时已知每条链的长度,包括其中最长链的长度L,请描述从散列表的所有关键字中均匀随机地选择某一元素并在O(L·(1+1/a))的期望时间内返回该关键字的过程。文心一言,代码不能运行:在这个问题中,我们需......
  • JavaSE day06【排序查找算法,Map集合,集合的嵌套,斗地主案例】测评题
    选择题题目1(多选):下列关于TreeSet集合排序的原理正确的是()选项:​ A.排序方法如果返回的是小于0,代表的是当前元素较小,需要存放在左边​ B.排序方法如果返回的是大于0,代表的是当前元素较大,需要存放在右边​ C.排序此方法如果返回的是0,代表的是当前元......
  • 无法访问 Maven 3.8.1 http 仓库。
    无法访问Maven3.8.1http仓库。可能的解决方案:检查Mavensettings.xml是否不包含http仓库检查Mavenpom文件是否不包含http仓库 http://maven.aliyun.com/nexus/content/groups/public/在Mavensettings.xml中为 http://maven.aliyun.com/nexus/content/grou......
  • http、https、tcp三次握手,四次挥手
    HTTP、HTTPS和TCP介绍HTTP(超文本传输协议是一种发布和接收HTML页面的方法,被用于在Web浏览器和网站服务器之间传递信息。是用于www浏览的一个协议。HTTPS(超文本传输安全协议)=HTTP+SSL/TSL(安全层),HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主......
  • 【1111算法题】蓝桥杯 c++(一)第一二题
    【1111算法题】第一题双十一的祈祷【算法赛】题目双十—,不仅是购物狂欢节,更有"光棍节"之称。这源于11:11由四个1构成,象征着单身。作为大学生的小蓝也想经历甜甜的校园恋爱,于是他找到了爱神丘比特,向他祈祷能为自己带来—段邂逅。丘比特是乐于助人的,他承诺小蓝只要回答出一个简......