我正在寻找 Netsuite 中的 oauth 实现。Netsuite 支持 oauth 吗?我在 NetSuite 中搜索了 oath 实现,但没有一个结果。
有没有官方文件说netsuite不支持oauth?
我正在寻找 Netsuite 中的 oauth 实现。Netsuite 支持 oauth 吗?我在 NetSuite 中搜索了 oath 实现,但没有一个结果。
有没有官方文件说netsuite不支持oauth?
NetSuite 的 SuiteTalk API 确实支持 oAuth,尽管它的实现方式与其他服务(google、stripe 等)非常不同。获取 oauth 凭据需要用户运行一个非显而易见的过程并复制/粘贴四个单独的密钥。我编写了一份指南,详细说明了如何使用 oAuth 设置 NetSuite SuiteTalk API。
在 15.1 中,NetSuite 支持使用 OAuth 1.0 令牌的入站 RESTlet 调用(请注意,它不是完整的 OAuth 1.0 协议,尽管它使用其令牌和标头格式)。在 NetSuite 中,您可以通过两种方式获取访问令牌 - 调用令牌端点,或者从 UI 手动获取。好消息是,如果您打算从 node.js 或 SuiteScript(例如 Suitelets)调用 RESTlets,您仍然可以使用 OAuth 1.0 开源库,例如 Java 或 oauth-1.0a.js 的 scribe
PS 只需为 RESTlet 寻找基于令牌的身份验证
Netsuite 支持 OAuth,您可以使用 OAuth 从外部应用程序调用 Restlet。有很多东西需要配置才能让它工作,它非常复杂,所以我写了这个分步指南。 查看分步说明。
配置签名和标头的基本代码
var NETSUITE_ACCOUNT_ID = '1234567890_SB'
var BASE_URL = 'https://1234567890_SB.restlets.api.netsuite.com/app/site/hosting/restlet.nl'
var HTTP_METHOD = 'POST'
var SCRIPT_ID = '613'
var OAUTH_VERSION = '1.0';
var SCRIPT_DEPLOYMENT_ID = '1'
var TOKEN_ID = "1234567890abcdefghijklmnopqrstuvwxyz0987654321"
var TOKEN_SECRET = "1234567890abcdefghijklmnopqrstuvwxyz0987654321"
var CONSUMER_KEY = "1234567890abcdefghijklmnopqrstuvwxyz0987654321"
var CONSUMER_SECRET = "1234567890abcdefghijklmnopqrstuvwxyz0987654321"
var text = "";
var length = 32;
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (var i = 0; i < length; i++) {
text += possible.charAt(Math.floor(Math.random() * possible.length));
}
var OAUTH_NONCE = text;
var TIME_STAMP = Math.round(+new Date() / 1000);
var data = '';
data = data + 'deploy=' + SCRIPT_DEPLOYMENT_ID + '&';
data = data + 'oauth_consumer_key=' + CONSUMER_KEY + '&';
data = data + 'oauth_nonce=' + OAUTH_NONCE + '&';
data = data + 'oauth_signature_method=' + 'HMAC-SHA1' + '&';
data = data + 'oauth_timestamp=' + TIME_STAMP + '&';
data = data + 'oauth_token=' + TOKEN_ID + '&';
data = data + 'oauth_version=' + OAUTH_VERSION + '&';
data = data + 'script=' + SCRIPT_ID;
var encodedData = encodeURIComponent(data);
var completeData = HTTP_METHOD + '&' + encodeURIComponent(BASE_URL) + '&' + encodedData;
var hmacsha1Data = CryptoJS.HmacSHA1(completeData, CONSUMER_SECRET + '&' + TOKEN_SECRET);
var base64EncodedData = Base64.stringify(hmacsha1Data);
var oauth_signature = encodeURIComponent(base64EncodedData);
var OAuth = 'OAuth oauth_signature="' + oauth_signature + '",';
OAuth = OAuth + 'oauth_version="1.0",';
OAuth = OAuth + 'oauth_nonce="' + OAUTH_NONCE + '",';
OAuth = OAuth + 'oauth_signature_method="HMAC-SHA1",';
OAuth = OAuth + 'oauth_consumer_key="' + CONSUMER_KEY + '",';
OAuth = OAuth + 'oauth_token="' + TOKEN_ID + '",';
OAuth = OAuth + 'oauth_timestamp="' + TIME_STAMP + '",';
OAuth = OAuth + 'realm="' + NETSUITE_ACCOUNT_ID + '"';
var request = https.post({
url: BASE_URL + '?script=' + SCRIPT_ID + '&deploy=' + SCRIPT_DEPLOYMENT_ID,
headers: { "Content-Type": "application/json", "Authorization": OAuth },
body: JSON.stringify({ hello: "world" })
})
var response = JSON.parse(request.body)
log.debug('response', response)
入站单点登录可能是您想要查看的?
现在没有 oauth 选项(如果您正在谈论生成密钥的应用程序等)
Netsuite 只有 webservices SOAP、RESTlet 用于集成选项。
需要明确的是,当用户离开去另一个应用程序(第 3 方应用程序)时,NetSuite 实际上确实提供了 Oauth。
它不支持从第三方进入 NetSuite。为此,您将需要使用 SAML,它现在在我们现在发布的版本 (2013.1) 之前的版本 (2012.3) 中支持它,并且据报道它可以工作。我们在内部针对 Microsoft AD FS 部署 SAML,但只完成了一半,但我们会得到它,我们会使用它,并且喜欢它。
您需要登录到 NetSuite,然后点击支持,然后在 SAML 上搜索以查看这些文档。
让我知道这是否回答了您的问题。