Postmanを使用したヘッダーでのJWTトークンの送信


169

次の記事に基づいて、JWTトークンベースのセキュリティの実装をテストしています。テストサーバーからトークンを正常に受信しました。Chrome POSTMAN RESTクライアントプログラムでヘッダー内のトークンを送信する方法がわかりません。

郵便配達のスクリーンショット

私の質問は次のとおりです。

1)正しいヘッダー名やPOSTMANインターフェイスを使用していますか?

2)トークンをbase 64エンコードする必要がありますか?トークンを送り返すだけでいいと思った。


こんにちは、POSTMANで受け取ったjwtトークンはどこで確認できますか?
Usr

1
@MLondei、受信サーバーの構成方法によって異なります。URLとして返される(URL文字列で検索される)か、応答の本文で返される(応答の本文フィールドで検索される)ことができます。それらは私が知っている2つの主要なものです。
ダイオードダン

回答:


277

リクエストのヘッダー名には、Authorizationを使用します。トークンの前にベアラーを置きます。試してみただけでうまくいきました。

承認:ベアラーTOKEN_STRING

JWTの各部分は、base64urlでエンコードされた値です。


61
明確にするために、「Header」フィールドはAuthorizationになり、「Value」フィールドはBearer [WHITESPACE] <your-code-here>になります
Diode Dan

フィールドのどの部分が暗号化されているか知っていますか?最後の「。」の直後のデータのようです セパレーターは私に文字化けのように見えるものを与えています。これは実際にはトークンジェネレータによって暗号化された情報だと思いますか?
ダイオードダン14

5
jwt.ioをチェックしてください。JWTを貼り付けてデコードされたコンテンツを表示できるセクションがあります。これは、何が起こっているかを確認するための最良の方法です。サーバーシークレット文字列は、トークンの最後のセクションを作成するために使用されます。JWTはペイロードに署名するだけで暗号化しません。つまり、文字列のパート1および2をデコードできますが、シークレットなしでは検証できません。self-issued.info/docs/draft-ietf-oauth-json-web-token.html
Mick Cullen

4
JWTの前にBearerを置く必要がある理由を誰かが詳しく説明してくれませんか?これは、これがJWTであるというサーバーへの何らかの信号ですか?
user137717

3
それは単なる慣例です-すべての詳細はここにあります: jwt.io/introduction
Michael Noyb

134

これが役立つ場合の画像です:)

郵便配達

更新:

郵便配達員チームは、「認証」タブに「ベアラートークン」を追加しました。 郵便配達員の更新


40

この質問に、JWT Apisをテストするのに役立つ少し興味深いヒントを追加します。

実際はとてもシンプルです。

ログインすると、Api(ログインエンドポイント)ですぐにトークンを受け取ります。@ mick-cullenが言ったように、ヘッダーでJWTを使用する必要があります。

Authorization: Bearer TOKEN_STRING

自動化したい場合、または単に作業を簡単にしたい場合は、次のように他のすべてのエンドポイントで呼び出すことができるグローバルとしてトークンを保存できます。

Authorization: Bearer {{jwt_token}}

Postmanの場合:次に、jwt_token = TOKEN_STRINGとして、postmanでグローバル変数を作成します。

ログインエンドポイント:便利にするために、[テスト]タブの先頭に以下を追加します。

var data = JSON.parse(responseBody);
postman.clearGlobalVariable("jwt_token");
postman.setGlobalVariable("jwt_token", data.jwt_token);

私はあなたのapiが応答でトークンとしてjsonとしてトークンを返していると思います:{"jwt_token": "TOKEN_STRING"}、なんらかのバリエーションがある可能性があります。

最初の行で、応答をデータ変数に追加します。グローバルをクリーンアップして、値を割り当てます。

これで、トークンがグローバル変数にあり、すべてのエンドポイントでAuthorization:Bearer {{jwt_token}}を使いやすくすることができます。

このヒントがお役に立てば幸いです。


編集する
もの

Postmanのテストについて:テストの例

コマンドライン:ニューマン

CI:Jenkinsとの統合

素晴らしいブログ投稿:マスターAPIテストの自動化


興味深いことに、私はTestタブとPostmanコーディングの概念に慣れていません。これから始めることをお勧めするリソースはありますか?
ダイオードダン


実際、自動化されたテストに関しては、Postmanは非常に興味深く、非常に強力です。テストで実行できるランダムデータグローバル変数または環境変数を構築できるように、postmanを設定できます。そして、反復実行を行い、エンドポイントの単体テストとして応答をテストします。それらを保存し、コードを変更するときにエラーを見つけます。コマンドラインユーティリティを使用していませんが、ci-pipelineで実行するように設定できることを理解しています。
パブロパラシオス2017年

コマンドラインについては、こちらをご覧ください:getpostman.com/docs/newman_intro
Pablo Palacios

9

私は同じ問題を抱えていましたがFlask、最初の2つの同じソリューションを試し(Authorization: Bearer <token>)、これを取得した後:

{
    "description": "Unsupported authorization type",
    "error": "Invalid JWT header",
    "status_code": 401
}

私は最終的にそれを使ってそれを解決することができました:

Authorization: jwt <token>

同じことに出会う人たちにとっては、時間の節約になるかもしれないと思いました。


1
私はなっていたAuthentication credentials were not provideddjango使用しますBearer <token>。で解決しましたjwt <token>。解決策をありがとう
S_M 2017年

7

これは自動的にトークンを設定する方法です

ログイン/認証リクエスト

ここに画像の説明を入力してください

次に、認証されたページ

ここに画像の説明を入力してください


4

ポストマンを使用したい場合は、ヘッダーをそのまま使用するのが正しい方法です。

キー:承認

値:jwt {token}

それと同じくらい簡単です。


2

WordPressプラグインAdvanced Access Managerを使用してJWT認証を開くユーザー向け。

ヘッダーフィールドには、承認ではなく認証を配置する必要があります

ここに画像の説明を入力してください

AAMは彼らのドキュメントの中でそれを述べました、

注意!AAM 、ほとんどのApacheサーバーによってスキップされるため、標準のAuthorizationヘッダー使用しません。...


それが誰かを助けることを願っています!他の回答もありがとうございました!


2
  1. 郵便配達員を開きます。
  2. 「ヘッダー」フィールドに移動します。
  3. 「キー値」の空白が表示されます。
  4. キータイプは「Authorization」です。
  5. 値のタイプは「Bearer(space)your_access_token_value」です。

できた!


2

ここに画像の説明を入力してください

それ以外すべて。Params、Authorization、Body、Pre-request Script、Testsは空です。[ Headers ]タブを開き、図に示すように追加します。GETリクエストでも同じです。


0

どういうわけか郵便配達は私のために働いていませんでした。機能するRESTEDと呼ばれるChrome拡張機能を使用する必要がありました。


0

moplinが言ったように私はやりました。しかし、私の場合、サービスはJWTをレスポンスヘッダーで、「Authorization」キーの下の値として送信します。

Authorization →Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJpbWFsIiwiZXhwIjoxNDk4OTIwOTEyfQ.dYEbf4x5TGr_kTtwywKPI2S-xYhsp5RIIBdOa_wl9soqaFkUUKfy73kaMAv_c-6cxTAqBwtskOfr-Gm3QI0gpQ

私がしたことは、郵便配達員としてグローバル変数を作成することでした

key-> jwt value-
> blahblah

ログインリクエスト-> [テスト]タブで、追加

postman.clearGlobalVariable("jwt");
postman.setGlobalVariable("jwt", postman.getResponseHeader("Authorization"));

他のリクエストでは、[ヘッダー]タブを選択し、

キー->認証

値-> {{jwt}}


0

Postmanの最新バージョン(7 ++)では、AuthorizationにBearerフィールドがない可能性があるため、[Header]タブに移動します

認証としてキーを選択し、値にJWTを書き込みます


v7.19.0以降の場合もしばらくありますBearer Tokenが、Authorizationタブにヘルパーがあり、ここにトークン値(ハードコードまたは動的変数として)を追加するAuthorizationと、リクエストに対して同じヘッダーが作成されます。
Danny Dainton、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.