首页 > 其他分享 >OAuth1.0

OAuth1.0

时间:2024-02-19 16:13:10浏览次数:17  
标签:URL OAuth1.0 OAuth 签名 signature oauth PHP

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

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对应Magento Integration中的Consumer Key

 

3、oauth_token对应Magento Integration中的Access 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://xxx.com/rest/V1/categories/5/products?a=1&b=2,那么base URL则为https://xxx.com/rest/V1/categories/5/products,并用步骤(1)中的httpMethod和次步骤中的字符串baseString拼接成string1。PHP中的URL encode方法为:rawurlencode

 

 

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

 

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

 

(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

标签:URL,OAuth1.0,OAuth,签名,signature,oauth,PHP
From: https://www.cnblogs.com/fengliang/p/18021345

相关文章

  • Springboot和Vue(2或者3都行)实现Twitter授权登录,并获取用户公开信息-OAuth1.0。
    第一步先申请twitter开发者账号,创建App,我这里没有创建app,当时好像是默认有一个app,twitter官方说,创建一个app需要先删除一个app,我是没有充钱的,不知道充钱和免费使用接口的是不是一样的。第二步在生成CustomerKey以及CustomeSecret,我之后会用到这两个,这写密钥一生成永久有效,除非......
  • OAuth1.0的在http请求中的使用方式以及签名算法说明
    1、在httprequestheader的Authorization中,其格式为Authorization:"OAuthoauth_consumer_key="OAuthConsumeKey",oauth_token="OAuthToken",oauth_signature_method="HMAC-SHA256",oauth_timestamp="OAuthTimestamp",oauth_nonc......
  • Netsuite Oauth1.0 C# 项目对接 踩坑记录
    参考Github项目地址:https://github.com/ancpetras/asp.net-netsuite-oauth-1.0-starter注意点:1、Realm这个参数在Authorization请求头中,但是它不需要参与签名,不要将Realm丢进去一起签名了。2、参与签名的还包括URL传参中的参数,比如:?script=152&deploy=1中的script与deploy。3、......