macos - 在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 终端进行操作?如果是这样,如果有人能指出正确的方向,那就太好了。
谢谢
解决方案
推荐阅读
- python - 用beautifulsoup抓取时如何在html日期选择器中输入日期范围?
- amazon-web-services - Create AWS Access Policy to Only 1 S3 Bucket
- google-cloud-platform - BigQuery 加载作业不会插入所有数据
- javascript - 尝试使用带有 JSON 的点表示法从 Stripe API 获取特定键值时遇到问题
- c# - 使用两个参数之一的 LINQ 语句
- react-native - 如何在 react-native 中更改兄弟组件中的文本?
- python - 我可以使用 Sphinx 自动模块但在签名中删除模块名称吗?
- angular - 无法使用 Angular 中的 Formbuilder 在选择元素中设置数组值
- spring-boot - 在没有登录后调用的情况下验证用户
- node.js - 错误的身份验证:[Symbol(mongoErrorContextSymbol)]: {}