首页 > 解决方案 > 在macos(或windows)中为api创建base64签名

问题描述

我正在尝试在 macos 上使用 curl 访问网站,目的是下载文件并静默安装文件。

到目前为止,我所拥有的是:

curl -X 'GET' \
  'https://app.ninjarmm.com/api/v2/organization/21/location/14/installer/MAC_PKG' \
  -H 'accept: application/json'

我从那里得到了 api tester 网站。登录后直接运行api命令即可。但我需要从 Macos 终端授权>(以下网站的图片示例) 在此处输入图片描述

我得到的错误说我缺少标题。当我查看 apis 文档时,它表明我必须从我的密钥创建一个 base64 并将其用作签名。

我有一个 api 或“Accesskeyid”,还有一个网站给我的“秘密访问密钥”。

从那里的文档:https ://resources.ninjarmm.com/PublicApi/0.1.2/NinjaRMM%20Public%20API%20v0.1.2.pdf

它说:

Signature 元素是请求中选定元素的 RFC 2104 HMAC-SHA1,因此 Authorization 标头的 Signature 部分将因请求而异。如果系统计算的请求签名与请求中包含的签名匹配,则请求者将证明拥有秘密访问密钥。然后,将根据向其颁发密钥的开发者的身份和权限处理该请求。

他们提供了一个例子,但他们说的pseudogrammar是我以前从未听说过的:

Signature = Base64( HMAC-SHA1( YourSecretAccessKeyID, Base64( UTF-8-EncodingOf( StringToSign ) ) ) );
StringToSign = HTTP-Verb + "\n" +
Content-MD5 + "\n" +
Content-Type + "\n" +
Date + "\n" +
CanonicalizedResource;

从这里我迷失了如何制作签名。

他们还提到他们现在也可以宣誓。但是我不确定是否可以从 macos 终端进行操作?如果是这样,如果有人能指出正确的方向,那就太好了。

谢谢

标签: macoscurlterminaloauth-2.0

解决方案


推荐阅读