我可以访问一个API,我试图开始利用自动执行某些任务,然后我直接进入它但被JWT阻止,我从未使用过。我也没有使用python几年就离开了,所以我有点生疏了。请耐心等待。
以下是API文档的直接引用:
The authentication mode for an organization is with a JSON Web Token. Users
must pass a JSON Web Token (JWT) in the header of each API request made.
To obtain the JWT, send the user’s API key (UUID) and password in a JSON Web
Token GET Request. The authorization method of “Bearer” and a
space is then prefixed to the encoded token string returned. The token will
be tied to the user account that generated the JWT.
我已尝试使用requests
,但我遇到了405错误,我还安装并导入了pyjwt
,但这对我来说很困惑。这基本上是我尝试通过python发送的内容:
POST https://<our endpoint>/v1/token/get HTTP/1.1
Content-Type: application/json
{
"username": "<myUsername>",
"password": "<myPassword>"
我已经验证目标API正在运行,因为有一小部分功能可以在没有JWT的情况下运行,并且可以通过requests
轻松访问
欢迎提供建议,任何教程都是如此。我曾尝试阅读几篇JWT教程,但我很难将其翻译成python。
谢谢!
答案 0 :(得分:0)
问题:要获取JWT,请在JSON Web令牌GET请求中发送用户的API密钥(UUID)和密码
使用python_jwt
的解决方案。
<强>假设强>:
编码方法= HS256
claims
字段名'consumerId'
claims
字段名称'httpMethod'
JWT
中的url
似乎是:
'http://httpbin.org/get?eyJ0eXAiOiAiSldUIiwgImFsZyI6ICJIUzI1NiJ9... (omitted for brevity)
response.json()
包含您之后必须使用的JWT
。
注意:您必须使用
https://<base url>/v1/token/get
import python_jwt as jwt
# Create claims dictionary for generation of JwToken
claims = {
'consumerId': 'My App ID',
'httpMethod': 'GET'
}
import datetime
# create JWToken
jwtoken = jwt.generate_jwt(claims, 'My secret', 'HS256', datetime.timedelta(minutes=5))
response = requests.get('http://httpbin.org/get', jwtoken)
print(response.json())
使用Python测试:3.4.2 - 请求:2.11.1