我正在研究一个套件脚本,以将NetSuite与Walmart Marketplace API集成在一起。而且,正如另一个OP here所说的那样,他们的文档非常清楚地表明,如果您不使用Java,那您就自己做。

我正在寻找一种在Suitescript或javascript中执行相同操作的方法。

来自Walmart API文档的说明:


  通过以下方式对此数据的字节数组表示形式进行签名:
  
  解码您的私钥的Base 64,PKCS-8表示形式。请注意,密钥是使用PKCS-8编码的。各种语言的库都提供了指定密钥以这种格式而不是其他冲突格式(例如PKCS-1)的功能。使用密钥的此字节表示形式使用带有RSA的SHA-256对数据进行签名。使用Base 64对结果签名进行编码。


并且,从他们的文档中获得一个Java代码来执行相同的操作:

 public static String signData(String stringToBeSigned, String encodedPrivateKey) {
    String signatureString = null;
    try {
        byte[] encodedKeyBytes = Base64.decodeBase64(encodedPrivateKey);
        PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec(encodedKeyBytes);
        KeyFactory kf = KeyFactory.getInstance("RSA");
        PrivateKey myPrivateKey = kf.generatePrivate(privSpec);
        Signature signature = Signature.getInstance("SHA256withRSA");
        signature.initSign(myPrivateKey);
        byte[] data = stringToBeSigned.getBytes("UTF-8");
        signature.update(data);
        byte[] signedBytes = signature.sign();
        signatureString = Base64.encodeBase64String(signedBytes);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return signatureString;
}


供参考,这里是similar thing asked for dot net。任何帮助,将不胜感激。

最佳答案

我曾经尝试用Javascript开发SAML连接器,并发现了几个处理不同密钥文件格式等的库。虽然相距甚远,但运行某些脚本的时间令人难以置信(想象一下尝试登录,但过程需要两分钟才能完成。确定您的登录名有效)

那时,我切换到外部系统,并使用Netsuite的入站SSO管理SSO。

看起来,即使使用SS 2.0,加密部门的NS看起来也没有太大改善。

我倾向于将其分为两个部分。在Suitescript中生成文件,并将其通过处理签名要求的基于Java的Web服务传递。减少您必须编写的Java数量,并使事务提取/格式化脚本易于控制。

09-25 21:10