【发布时间】:2023-03-15 06:18:01
【问题描述】:
问题: 我正在尝试从网站获取 requests.get 打印,它需要签名。从我在网站上看到的内容来看,它需要获取我的密钥并使用 HMAC-SHA1 base 64 对其进行签名。
我知道我需要将 hmac 导入到我的 python 脚本中,但除此之外,我不确定我的签名是否会是网站正在寻找的。p>
这是一个如何设置身份验证的链接:https://www.ninjarmm.com/dev-api/#the_authentication_header
在网站上它给出了签名应该如何的示例,但我不知道如何在 python 中应用它:
### How do I apply this in my python script's header?
Signature = Base64( HMAC-SHA1( YourSecretAccessKeyID, Base64( UTF-8- Encoding-Of( StringToSign ) ) ) ); StringToSign = HTTP-Verb + "n" + Content-MD5 + "n" + Content-Type + "n" + Date + "n" + CanonicalizedResource;
### How do I apply this in my python script's header?
这是我的代码:
import requests
import os
import json
from datetime import date
from email.utils import formatdate
ninjaapi = "some data"
ninjasak = "some data"
ninjaurl = "https://api.ninjarmm.com/v1/devices"
ninjaheaders = {"authorization":ninjaapi + ninjasak, "Date":now,}
ninjastatusresponse = requests.get(ninjaurl, headers=ninjaheaders)
ninja_json = ninjastatusresponse.json()
print(ninja_json)
这是我目前得到的结果:
{'error': 'invalid_header', 'error_description': "Invalid 'Authorization' header", 'error_code': 1}
如果有人有任何我可以测试的想法,请告诉我!
感谢您的宝贵时间,
【问题讨论】:
标签: python api python-requests header hmacsha1