NetSuite Oauth实现

NetSuite Oauth实现,netsuite,Netsuite,我正在Netsuite中寻找oauth实现。Netsuite支持oauth吗?我在NetSuite中搜索了誓言实现,但没有一个结果 是否有任何官方文档表明netsuite不支持oauth?现在没有oauth选项(如果您谈论的是生成密钥的应用程序等) Netsuite只有WebServicesSOAP和RESTlet的集成选项。要清楚,Netsuite实际上在用户离开去另一个应用程序(第三方应用程序)时提供Oauth 它不支持从第三方进入NetSuite。为此,您需要使用SAML,在我们现在发布的

我正在Netsuite中寻找oauth实现。Netsuite支持oauth吗?我在NetSuite中搜索了誓言实现,但没有一个结果

是否有任何官方文档表明netsuite不支持oauth?

现在没有oauth选项(如果您谈论的是生成密钥的应用程序等)


Netsuite只有WebServicesSOAP和RESTlet的集成选项。

要清楚,Netsuite实际上在用户离开去另一个应用程序(第三方应用程序)时提供Oauth

它不支持从第三方进入NetSuite。为此,您需要使用SAML,在我们现在发布的版本(2013.1)之前的版本(2012.3)中它现在支持SAML,并且据报道它可以工作。我们在这里针对Microsoft AD FS内部部署SAML,但只做了一半,但我们会得到它,我们会使用它,并且喜欢它

您需要登录到NetSuite,然后点击支持,然后搜索SAML以查看这些文档


如果这能回答您的问题,请告诉我。

入站单点登录可能是您想要查看的内容


在15.1 NetSuite中,支持使用OAuth 1.0令牌的入站RESTlet调用(请注意,它不是完整的OAuth 1.0协议,尽管它使用其令牌和头格式)。在NetSuite中,您可以通过两种方式获取访问令牌-调用令牌端点或从UI手动获取。 好的是,如果您计划从node.js或SuiteScript(例如Suitelets)调用restles,您仍然可以使用OAuth 1.0开源库,如scribe for Java或OAuth-1.0a.js


PS只需为RESTlet寻找基于令牌的身份验证,NetSuite的SuiteTalk API确实支持oAuth,尽管它的实现方式与其他服务(google、stripe等)非常不同。获取oauth凭据需要用户运行一个不明显的过程,并复制/粘贴四个单独的密钥。我已经编写了一个。

Netsuite确实支持OAuth,您可以使用OAuth从外部应用程序调用Restlet。为了让它工作,有很多东西需要配置,这相当复杂,所以我写了这个分步指南。

配置签名和标题的基本代码

var NETSUITE\u ACCOUNT\u ID='1234567890\u SB'
var BASE_URL='1〕https://1234567890_SB.restlets.api.netsuite.com/app/site/hosting/restlet.nl'
var HTTP_方法='POST'
变量脚本_ID='613'
var OAUTH_VERSION='1.0';
变量脚本部署ID='1'
var TOKEN_ID=“1234567890abcdefghijklmnopqrstuvxyz097654321”
var TOKEN_SECRET=“1234567890ABCDEFGHIjklmnopqrstuvxyz097654321”
var CONSUMER_KEY=“1234567890abcdefghijklmnopqrstuvxyz097654321”
var CONSUMER_SECRET=“1234567890abcdefghijklmnopqrstuvxyz097654321”
var text=“”;
变量长度=32;
var-mablue=“ABCDEFGHIJKLMNOPQRSTUVXYZABCDFGHIJKLMNOPQRSTUVXYZ0123456789”;
对于(变量i=0;i
没有发布2012.3版。我们的帐户遗漏了什么吗?我相信有一个2012.3FWIW-一旦您登录到Netsuite实例(您必须登录),文档就在帮助中。点击“帮助”按钮,转到SuiteCloud->SuiteScript->了解NetSuite SuiteScript类型->RESTlet。您将在这里找到更多详细信息。@Kikoz您能否详细说明Netsuite 15.1中引入的OAuth/令牌实现。是否有用于上述OAuth身份验证的java版本?
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)