如何解决在base64中使用ruby进行API调用的授权,无填充
我正在对API进行后期调用,该API要求采用这种形式的授权标头
Authorization: "Basic " + BASE64($PUBLICKEY + ":" + HMAC_SHA256(BASE64_WITHOUT_PADDING($REQUEST_BODY),$SECRETKEY))
我尝试的代码:
require 'json'
require 'rest-client'
require 'openssl'
require 'base64'
class Search
attr_reader :results
def initialize
# Base64.urlsafe_encode464(str).gsub('=','')
public_key = ENV['PUBLICKEY']
secret_key = ENV['SECRETKEY']
body = '{"jsonrpc":"2.0","method":"activity.find","params":{"query":{"supplierId":"sup_ee9f3fbe-72b7-4677-8a91-a76c5325b635","activityIds":[],"cursor":null}},"id":1}'
sha256 = OpenSSL::HMAC.digest('sha256',secret_key,Base64.urlsafe_encode64(body,padding: false))
auth = Base64.strict_encode64("#{public_key}:#{sha256}")
# perform request and assign results
@results = RestClient.post(
'https://api.experiencebank.io/v1','{"jsonrpc":"2.0","id":1}',{
Accept: 'application/json',content_type: 'application/json',Authorization: "Basic #{auth}"
}
)
end
end
And this is what I get back
{ "jsonrpc": "2.0","error": { "code": 400,"message": "Signature Mismatch" },"id": 1 }
我认为问题在于在base64中使用授权在无填充的情况下对正文请求进行编码。
有人可以通过授权码帮助我吗??? 该API为https://api.experiencebank.travel/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。