使用python发送包含用户名/密码的JWT Get Request

时间:2017-08-24 17:13:29

标签: python jwt

我可以访问一个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。

谢谢!

1 个答案:

答案 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