使用bash计算NetSuite restlet的OAuth签名

时间:2017-03-23 16:57:05

标签: bash curl oauth

我目前正在尝试为我的curl请求标头生成OAuth签名。这些指向NetSuite restlet。在线资源要么是不确定的,要么是我的理解/缺乏示例。如何计算我的请求的oauth_signature值?

以下是我的请求,省略了凭证:

curl --request GET \
  --url 'https://rest.na1.netsuite.com/app/site/hosting/restlet.nl?script=foo&deploy=bar' \
  --header 'Authorization: OAuth realm="'"$realm"'",oauth_consumer_key="'"$oauth_consumer_key"'",oauth_token="'"$oauth_token"'",oauth_signature_method="HMAC-SHA1",oauth_timestamp="'"$(OAuth_timestamp)"'",oauth_nonce="'"$(OAuth_nonce)"'",oauth_version="1.0",oauth_signature="'"$(OAuth_signature)"'"' \
  --header 'cache-control: no-cache' \
  --header 'content-type: application/json' \
 | jq

以下是我为了便于阅读而传递的参数列表:

params=(
    oauth_consumer_key='foo'
    oauth_signature_method='HMAC-SHA1'
    oauth_version='1.0'
    oauth_nonce=$(OAuth_nonce)
    oauth_timestamp=$(OAuth_timestamp)
    oauth_token='tokenfoo'
    realm='4478811'
)

我正在生成时间戳和随机数:

OAuth_nonce () {
    md5 <<< "$RANDOM-$(date +%s.%N)" | cut -d' ' -f 1
}

OAuth_timestamp () {
    echo "$(date +%s)"
}

我从https://github.com/livibetter-backup/bash-oauth获得了大部分资源,但没有文档存在,示例很差,当我测试函数时,库本身似乎不起作用。

我在Postman中运行时在脚本中使用的所有值(已确认通过bash +x)都有效,但我无法在其外部计算oauth_signature值。

如何创建OAuth_signature函数,我可以返回有效签名?我将要通过哪些参数来正确计算?是否可能或更容易使用perl或python生成?

0 个答案:

没有答案