Netsuite SuiteScript hmac sha256
我实际上正在从事一个基于netsuite产品的新项目。 我正在尝试使用hmac sha256加密消息 考虑到我有密码和钥匙,简单的方法是什么 我已经阅读了Netsuite中的文档,但我仍然感到口吃 这是我的职责Netsuite SuiteScript hmac sha256,netsuite,suitescript,suitescript2.0,Netsuite,Suitescript,Suitescript2.0,我实际上正在从事一个基于netsuite产品的新项目。 我正在尝试使用hmac sha256加密消息 考虑到我有密码和钥匙,简单的方法是什么 我已经阅读了Netsuite中的文档,但我仍然感到口吃 这是我的职责 function toHmacSHA256Base64(toCrypt, key) { var inputString = toCrypt; var myGuid = key; var sKey = crypto.createSecretK
function toHmacSHA256Base64(toCrypt, key) {
var inputString = toCrypt;
var myGuid = key;
var sKey = crypto.createSecretKey({
guid: myGuid,
encoding: encode.Encoding.UTF_8
});
var hmacSHA256 = crypto.createHmac({
algorithm: 'SHA256',
key: sKey
});
hmacSHA256.update({
input: inputString,
inputEncoding: encode.Encoding.BASE_64
});
var digestSHA256 = hmacSHA256.digest({
outputEncoding: encode.Encoding.HEX
});
return digestSHA256;
};
当然,在单词crypto
后面,我使用模块'N/crypto'
和encode'N/encode'
。
Thx很多。这大致正确,看起来与NS帮助中的示例完全相同。如果您有一个字符串,那么您可能需要更新调用的
inputEncoding:encode.Encoding.UTF_8
缺少的是如何生成密钥的guid。
为此,你需要一个手提箱。注意NS帮助的addSecretKeyField
而不是addCredentialField
:
/**
*@NApiVersion 2.x
*@NScriptType Suitelet
*/
define(['N/ui/serverWidget', './config.js'],
function(serverWidget, config) {
function onRequest(context) {
if (context.request.method === 'GET') {
var form = serverWidget.createForm({
title: 'SFTP Password'
});
form.addSecretKeyField({
id : 'username',
label : 'Pwd',
restrictToScriptIds : config.targetScript,
restrictToCurrentUser : false
});
form.addSubmitButton({
label: 'Submit Button'
});
context.response.writePage(form);
} else {
var textField = context.request.parameters.username;
context.response.write('You have entered: ' + textField);
}
}
return {
onRequest: onRequest
};
});
FWIW加密在这里是错误的术语。您正在创建用于确保数据完整性的数据散列。无法解密哈希
生成密钥的GUID后,我只需将其存储在配置文件中(与上面的脚本列表使用的配置文件相同)
在TypeScript中,它看起来像:
/**
* config.js
* @NApiVersion 2.x
*/
export var config = {
'host': '162.242.144.xxx',
'userName': 'unsername',
'targetScript': ['customscript_transmit_dsv_943', 'customscript_transmit_dsv_940', 'customscript_retrieve_dsv_944'],
'hostKey': 'AAAAB3Nza...Wz'
};
然后,除了config.xs文件以外的所有文件都可以存储在版本控制中。需要对脚本中使用的文件进行适当的访问群体设置。这大致正确,看起来与NS帮助中的示例完全相同。如果您有字符串,那么您可能需要更新调用
inputEncoding:encode.Encoding.UTF_8
缺少的是如何生成密钥的guid。
为此,请使用suitelet。请注意NS帮助的addSecretKeyField
而不是addCredentialField
:
/**
*@NApiVersion 2.x
*@NScriptType Suitelet
*/
define(['N/ui/serverWidget', './config.js'],
function(serverWidget, config) {
function onRequest(context) {
if (context.request.method === 'GET') {
var form = serverWidget.createForm({
title: 'SFTP Password'
});
form.addSecretKeyField({
id : 'username',
label : 'Pwd',
restrictToScriptIds : config.targetScript,
restrictToCurrentUser : false
});
form.addSubmitButton({
label: 'Submit Button'
});
context.response.writePage(form);
} else {
var textField = context.request.parameters.username;
context.response.write('You have entered: ' + textField);
}
}
return {
onRequest: onRequest
};
});
FWIW encrypt在这里是错误的术语。您正在创建用于确保数据完整性的数据哈希。您无法解密哈希
生成密钥的GUID后,我只需将其存储在配置文件中(与上面的脚本列表使用的配置文件相同)
在TypeScript中,它看起来像:
/**
* config.js
* @NApiVersion 2.x
*/
export var config = {
'host': '162.242.144.xxx',
'userName': 'unsername',
'targetScript': ['customscript_transmit_dsv_943', 'customscript_transmit_dsv_940', 'customscript_retrieve_dsv_944'],
'hostKey': 'AAAAB3Nza...Wz'
};
然后,除了config.xs文件以外的所有文件都可以存储在版本控制中。需要对脚本中使用的文件进行适当的访问群体设置。我正在尝试在RESTlet中计算HMAC,并且没有涉及任何表单。我正在尝试调用外部web服务,该web服务要求我发送HMAC.I在没有表单的情况下,ee无法创建secretKey。是吗?我想我必须从crypto js导入例程来完成这件简单的事情。表单只用于获取hmac密钥的密钥库引用一次。不过我已经使用了ss1和ss2的外部库路径,这也行得通。你是说这个方法perm吗立即在Netsuite中存储一个秘密,然后您可以使用返回的GUID引用该秘密?这些秘密在管理UI中的任何位置都可见吗?我已经搜索了文档和Netsuite,但找不到明显的位置来存储外部身份验证等用例的秘密。没错。返回的GUID是对上载的秘密的引用。您通过了吗您希望传递机密的Netsuite API的GUID。一旦这些机密存储在Netsuite中,您将如何管理它们?您是否需要在Netsuite之外的某个地方维护一个电子表格,以将您的GUID映射到它们包含的机密?我正在尝试在RESTlet中计算HMAC,并且没有涉及任何表单。我正在尝试o调用外部web服务,而该web服务要求我发送一个HMAC。我认为没有表单参与就无法创建secretKey。是吗?我想我必须从crypto js导入例程来完成这项简单的工作。表单只用于一次HMAC密钥的密钥库引用。我已经使用了外部但是ss1和ss2的库路由也是有效的。你是说这个方法在Netsuite中永久存储一个秘密,然后你可以用返回的GUID引用它吗?这些秘密在管理UI中的任何地方都可见吗?我搜索了文档和Netsuite,找不到明显的位置来存储诸如外部身份验证之类的用例的秘密诱惑。没错。返回的GUID是对上载的机密的引用。您将GUID传递给Netsuite的API,希望在其中传递机密。一旦这些机密存储在Netsuite中,您将如何管理它们?您是否需要在Netsuite之外的某处维护一个电子表格,以将您的GUID映射到它们包含的机密?