2017-08-24 8 views
0

私はいくつかのタスクを自動化するために活用しようとしているAPIにアクセスできますが、私はすぐにジャンプしました。私はまた、Pythonを使用しないで数年後に来ているので、私は少し錆びています。私と一緒に抱きしめてください。ここで送信JWT Pythonを使用してユーザー名/パスワードを含むリクエストを取得

はAPIドキュメントからの直接の引用である:私はrequestsと試みたが、私は405エラーが出てる

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. 

、私はまた、インストールおよび輸入pyjwtが、それは私には混乱を招くました。私はJWTなく動作機能の小さなセットがあるとして、対象のAPIが動作していることを確認したと簡単にrequests

経由でアクセスした

POST https://<our endpoint>/v1/token/get HTTP/1.1 
Content-Type: application/json 
{ 
"username": "<myUsername>", 
"password": "<myPassword>" 

:これは私のpython経由で送信しようとしているどのような本質的です

チュートリアルと同様にアドバイスを歓迎します。私はいくつかのJWTチュートリアルを読もうとしましたが、Pythonに翻訳するのは苦労しています。

ありがとうございます!

+0

1.ほとんどの例トークンのエンドポイントを知るにはPOST(あなたが試した)が必要ですが、上記のGETについての説明は必要です。あなたはもっと知ることができますか? 2.パスワードを使ったトークンリクエストは、(POST本体の) "grant_type = password&username = admin&password = 123"のように見えることが多いので、usernameをuuidに置き換える必要がありますか? 3.トークンを取得すると、このようなトークンをすべてのリクエストのヘッダーに追加する必要があります。「承認:ベアラー」(ここではっきりと唯一のことです。詳細情報や進捗状況を確認してください。 – jps

+0

4。ツールのフィドラーを手に入れて、あなたのreqestのための正しいフォーマットを見つけようとするとき、そしてPythonにリクエストを翻訳したと思ったときだけ、時間を節約します。 – jps

答えて

0

質問:JSONウェブトークンでJWTを入手するには、ユーザーのAPIキー(UUID)を送信し、パスワードpython_jwtを使用して要求

解を得ます。

仮定
エンコード方法= HS256
claimsフィールド名 'consumerId'
claimsフィールド名 'HTTPMETHOD'

urlであなたのJWTは、次のようになります。

'http://httpbin.org/get?eyJ0eXAiOiAiSldUIiwgImFsZyI6ICJIUzI1NiJ9... (omitted for brevity) 

response.json()には、その後に使用する必要があるJWTが含まれています。

:あなたのPythonでテスト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()) 

使用する必要があります:3.4.2 - 要求:I 2.11.1

関連する問題