我目前正在尝试为我的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生成?