Netsuite Rest Web服务签名

问题描述 投票:0回答:1

我正在与Netsuite Rest Web服务API(不是SOAP / RESTlet)进行集成。我使用提供的集合在邮递员中充分发挥了作用,但没有弄清楚签名的实际字符串,并且REST文档未显示任何内容。我试图同时使用其他两个服务中的文档。

因此,从邮递员那里获取了日志,我试图使用帐户ID,使用者密钥,令牌,创建随机数和Unix时间戳来复制我认为要做的事情。

GET / rest / platform / v1 / metadata-catalog / record?select =客户HTTP / 1.1接受:application / swagger + json授权:OAuthrealm =“ TSTDRV2164811”,oauth_consumer_key =“ 2bb1d46bb5f3a69fdea1ede39bf46e186bd860a15d8deaf51f7488b1e09bd2a2”,oauth_token =“ 02545230f53d0cf8fc5075f8cee01847f28131127fad358501479952bb8ce046”,oauth_signature_method =“ HMAC-SHA1”,oauth_timestamp =“ 1579805526”,oauth_nonce =“ V5GBSPyMRPB”,oauth_version =“ 1.0”,oauth_signature =“ rp6xmqnCofmVPl9D0nk48G9DVww%3D”用户代理:PostmanRuntime / 7.22.0缓存控制:无缓存邮递员令牌:cbc0f225-374c-4ecc-8b5b-daf60469137e主机:tstdrv2164811.suitetalk.api.netsuite.com接受编码:gzip,放气,br Cookie:NS_ROUTING_VERSION = LAGGING连接:保持活动状态

<?php
$account = 'TSTDRV2164811';
$consumer = '2bb1d46bb5f3a69fdea1ede39bf46e186bd860a15d8deaf51f7488b1e09bd2a2';
$token = '02545230f53d0cf8fc5075f8cee01847f28131127fad358501479952bb8ce046';
$key = ($consumer & $token);
//$created = date('U');
//$nonce  = substr(md5(uniqid(true)), 0, 10);
$created = '1579805526';
$nonce = 'V5GBSPyMRPB';
$sign = ($account & $consumer & $token & $nonce & $created);
$signature = urlencode(base64_encode(hash_hmac('sha1', $sign , $key, true)));

$output .= sprintf(
    '<root><signature>%s</signature><Nonce>%s</Nonce><Created>%s</Created></root>',
    $signature,
    $nonce,
    $created
);



echo $output;


?>

我希望获得上面的值,但是我得到了这个

<root>
    <signature><![CDATA[X7YAsD4a%2F1T0EZ7z4fSocGSFIps%3D]]></signature>
    <Nonce><![CDATA[V5GBSPyMRPB]]></Nonce>
    <Created><![CDATA[1579805526]]></Created>
</root>

希望此人有经验,因为充其量缺少文档

rest netsuite
1个回答
0
投票

您生成签名的字符串必须以非常特定的方式构造。

全部使用大写字母+&+基本URL +&+ URI编码的参数块(按字母顺序排列,不包括REALM)。除了Web请求本身中的任何参数外,还需要包括一些OAuth参数,例如oauth_signature_method

这里是用另一种语言来构造要签名的字符串的示例。

  // These are in alphabetical order, lower case - required by signing
  STRING2SIGN := '';
  STRING2SIGN := STRING2SIGN + 'deploy=' + SCRIPT_DEPLOYMENT_ID + '&';
  STRING2SIGN := STRING2SIGN + 'oauth_consumer_key=' + CONSUMER_KEY + '&';
  STRING2SIGN := STRING2SIGN + 'oauth_nonce=' + OAUTH_NONCE + '&';
  STRING2SIGN := STRING2SIGN + 'oauth_signature_method=' + 'HMAC-SHA1' + '&';
  STRING2SIGN := STRING2SIGN + 'oauth_timestamp=' + TIME_STAMP + '&';
  STRING2SIGN := STRING2SIGN + 'oauth_token=' + TOKEN_ID + '&';
  STRING2SIGN := STRING2SIGN + 'oauth_version=' + OAUTH_VERSION + '&';
  STRING2SIGN := STRING2SIGN + 'script=' + SCRIPT_ID;
  STRING2SIGN := URIEncode(STRING2SIGN);
  STRING2SIGN := HTTP_METHOD + '&' + URIEncode(BASE_URL) + '&' + STRING2SIGN;
  oauth_signature := URIEncode(TNetEncoding.Base64.EncodeBytesToString(THashSHA1.GetHMACAsBytes(STRING2SIGN, CONSUMER_SECRET + '&' + TOKEN_SECRET)));
© www.soinside.com 2019 - 2024. All rights reserved.