次の 記事 に基づいて、JWTトークンベースのセキュリティの実装をテストしています。テストサーバーからトークンを正常に受信しました。 Chrome POSTMAN RESTクライアントプログラムにヘッダーのトークンを送信させる方法がわかりません。
私の質問は以下の通りです。
1)正しいヘッダ名やPOSTMANインタフェースを使用していますか?
2)トークンをbase 64でエンコードする必要がありますか?私はトークンを送り返すことができると思いました。
リクエストのヘッダ名はAuthorizationを使用してください。トークンの前にベアラを置きます。試してみただけで、うまくいきます。
権限:ベアラTOKEN_STRING
JWTの各部分は、base64urlエンコード値です。
この質問に、JWT Apisのテストに役立つと思われる、少し興味深いヒントを追加します。
実はとても簡単です。
あなたがログインすると、あなたのApi(ログインエンドポイント)に、あなたはすぐにあなたのトークンを受け取るでしょう、そして@ mick-cullenが言ったようにあなたはあなたのヘッダにJWTを使わなければならないでしょう:
Authorization: Bearer TOKEN_STRING
自動化したい、あるいは単に人生を楽にしたいのなら、テストをトークンとしてグローバルとして保存し、他のすべてのエンドポイントで呼び出すことができます。
Authorization: Bearer {{jwt_token}}
Postmanの場合:次に、postmanでjwt_token = TOKEN_STRINGとしてグローバル変数を作成します。
あなたのログインエンドポイントで:それを便利にするために、テストタブの始めに追加してください:
var data = JSON.parse(responseBody);
postman.clearGlobalVariable("jwt_token");
postman.setGlobalVariable("jwt_token", data.jwt_token);
私はあなたのAPIが{{jwt_token ":" TOKEN_STRING "}のようにレスポンスのjsonとしてトークンを返していることを推測しています、何らかのバリエーションがあるかもしれません。
最初の行で、レスポンスをデータ変数に追加します。あなたのグローバルをきれいにして、値を割り当てます。
これであなたはグローバル変数にあなたのトークンを持っています。これはあなたのすべてのエンドポイントでAuthorization:Bearer {{jwt_token}}を使いやすくします。
このヒントが役立つことを願っています。
編集
読むべきこと
Postmanでのテストについて: テスト例
コマンドライン: Newman
CI: Jenkinsとの統合
素敵なブログ記事: マスターAPIテスト自動化
私はFlask
にも同じ問題を抱えていましたが、最初の2つの同じ解決策(Authorization: Bearer <token>
)を試してみたところ、次のようになりました。
{
"description": "Unsupported authorization type",
"error": "Invalid JWT header",
"status_code": 401
}
私はついにこれを使ってそれを解決することができました:
Authorization: jwt <token>
それは同じことに遭遇した人々にとって時間を節約するかもしれないと思った。
Postmanを使いたいのなら、正しい方法はヘッダをそのまま使うことです。
キー:認証
値:jwt {token}
それと同じくらい簡単です。
どういうわけか郵便配達員は私のために働きませんでした。私はうまくいったRESTEDと呼ばれるクロム拡張を使わなければなりませんでした。
私のケースのサービスではmoplinがどのようにして.BWをレスポンスヘッダで送信するかをキー "Authorization"の下の値として述べました。
Authorization →Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJpbWFsIiwiZXhwIjoxNDk4OTIwOTEyfQ.dYEbf4x5TGr_kTtwywKPI2S-xYhsp5RIIBdOa_wl9soqaFkUUKfy73kaMAv_c-6cxTAqBwtskOfr-Gm3QI0gpQ
私がしたことは、郵便配達のグローバル変数を
キー - > jwt
値 - > blahblah
ログインリクエスト - >テストタブで、追加
postman.clearGlobalVariable("jwt");
postman.setGlobalVariable("jwt", postman.getResponseHeader("Authorization"));
他のリクエストでは、ヘッダタブを選択して
キー - >承認
値 - > {{jwt}}
ワードプレスプラグイン Advanced Access Manager を使ってJWT認証を開く人のために。
Headerフィールドには、AuthorizationではなくAuthenticationを入力します。
AAMは彼らの ドキュメンテーション の中でそれを述べました、
注意! AAMは、ほとんどのApacheサーバーではスキップされるため、標準のAuthorizationヘッダーを使用しません。 ...
それが誰かに役立つことを願っています!他の回答をありがとう、私もたくさん助けてくれました!!