Mengirim token JWT di header dengan Postman

169

Saya sedang menguji implementasi keamanan berbasis JWT Token berdasarkan artikel berikut . Saya telah berhasil menerima token dari server pengujian. Saya tidak tahu bagaimana cara agar program Klien Chrome POSTMAN REST mengirim token di header.

tangkapan layar tukang pos

Pertanyaan saya adalah sebagai berikut:

1) Apakah saya menggunakan nama header kanan dan / atau antarmuka POSTMAN?

2) Apakah saya harus mendasarkan 64 mengkodekan token? Saya pikir saya bisa mengirim token kembali.

Diode Dan
sumber
Hai, di mana saya dapat melihat di POSTMAN token jwt yang saya terima?
Usr
1
@ MLondei, itu tergantung pada cara server penerima dikonfigurasikan. Itu bisa kembali sebagai URL (temukan di string URL) atau bisa kembali di badan respons (temukan di bidang tubuh respons). Itu adalah dua hal utama yang saya ketahui.
Diode Dan

Jawaban:

277

Untuk permintaan Header name cukup gunakan Otorisasi. Tempatkan Pembawa sebelum Token. Saya baru saja mencobanya dan itu berhasil untuk saya.

Otorisasi: Bearer TOKEN_STRING

Setiap bagian dari JWT adalah nilai yang disandikan base64url.

Mick Cullen
sumber
61
Sama seperti klarifikasi, bidang "Tajuk" menjadi Otorisasi dan bidang "Nilai" menjadi Pembawa [WHITESPACE] <Anda-kode-di sini>
Diode Dan
Apakah Anda tahu bagian bidang mana yang dienkripsi? Tampaknya data tepat setelah yang terakhir '.' pemisah memberi saya apa yang tampak seperti karakter sampah. Saya berasumsi ini sebenarnya informasi yang dienkripsi oleh generator Token?
Diode Dan
5
Lihat jwt.io. Ada bagian di mana Anda dapat menempelkan JWT dan melihat isinya yang telah diterjemahkan, ini adalah cara terbaik untuk melihat apa yang terjadi. String rahasia server digunakan untuk membuat bagian terakhir token. JWT hanya menandatangani payload tidak terenkripsi yaitu Anda dapat mendekodekan bagian 1 & 2 dari string tetapi tidak dapat memvalidasinya tanpa rahasia. self-issued.info/docs/draft-ietf-oauth-json-web-token.html
Mick Cullen
4
Adakah yang bisa menjelaskan mengapa kita perlu menempatkan Bearer sebelum JWT? Apakah ini semacam sinyal ke server bahwa ini adalah JWT?
user137717
3
Itu hanya konvensi - Anda dapat menemukan semua detail di sini: jwt.io/introduction
Michael Noyb
134

Berikut ini adalah gambar jika itu membantu :)

Tukang pos

Memperbarui:

Tim tukang pos menambahkan "Bearer token" ke "tab otorisasi": Tukang pos diperbarui

prasanthv
sumber
40

Saya menambahkan pertanyaan ini sedikit tip menarik yang dapat membantu Anda menguji JWT Apis.

Ini sebenarnya sangat sederhana.

Ketika Anda masuk, di Api Anda (titik akhir masuk), Anda akan segera menerima token Anda, dan seperti yang dikatakan @ mick-cullen, Anda harus menggunakan JWT pada header Anda sebagai:

Authorization: Bearer TOKEN_STRING

Sekarang jika Anda ingin mengotomatisasi atau hanya membuat hidup Anda lebih mudah, tes Anda, Anda dapat menyimpan token sebagai global yang dapat Anda panggil pada semua titik akhir lainnya sebagai:

Authorization: Bearer {{jwt_token}}

Pada tukang pos: Kemudian buat variabel global di tukang pos sebagai jwt_token = TOKEN_STRING.

Di titik akhir masuk Anda: Agar bermanfaat, tambahkan di awal Tab Tes, tambahkan:

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

Saya menduga bahwa api Anda mengembalikan token sebagai json pada respons sebagai: {"jwt_token": "TOKEN_STRING"}, mungkin ada beberapa variasi.

Pada baris pertama Anda menambahkan respons ke varibale data. Bersihkan Global Anda dan tetapkan nilainya.

Jadi sekarang Anda memiliki token Anda pada variabel global, yang membuatnya mudah digunakan Otorisasi: Bearer {{jwt_token}} di semua titik akhir Anda.

Semoga tip ini membantu.


Sunting
Sesuatu untuk dibaca

Tentang tes pada tukang pos: contoh pengujian

Command Line: Newman

CI: berintegrasi dengan Jenkins

Posting blog yang bagus: otomatisasi uji master api

Pablo Palacios
sumber
Menarik, saya tidak terbiasa dengan konsep Testtab dan kode pos. Apakah ada sumber daya yang Anda rekomendasikan untuk memulai ini?
Diode Dan
Sebenarnya Postman sangat menarik dan cukup kuat dalam hal pengujian otomatis. Anda dapat mengonfigurasi tukang pos sedemikian rupa sehingga dapat membangun data acak Variabel global atau variabel Lingkungan yang dapat Anda jalankan pada tes. Dan buat putaran berulang dan uji setiap respons sebagai tes unit titik akhir. Simpan dan temukan kesalahan saat Anda mengubah kode. Saya belum pernah menggunakan utilitas baris perintah tapi saya mengerti bahwa Anda dapat mengkonfigurasinya untuk berjalan di ci-pipeline Anda.
Pablo Palacios
Anda dapat membaca tentang baris perintah di sini: getpostman.com/docs/newman_intro
Pablo Palacios
9

Saya memiliki masalah yang sama dalam Flaskdan setelah mencoba 2 solusi pertama yang sama ( Authorization: Bearer <token>), dan mendapatkan ini:

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

Saya berhasil menyelesaikannya dengan menggunakan:

Authorization: jwt <token>

Kupikir itu mungkin menghemat waktu untuk orang yang mengalami hal yang sama.

Vucko
sumber
1
Aku mulai Authentication credentials were not provideddi djangogunakan Bearer <token>. diselesaikan dengan jwt <token>. Terima kasih atas solusinya
S_M
7

Berikut ini cara mengatur token ini secara otomatis

Atas permintaan login / auth Anda

masukkan deskripsi gambar di sini

Kemudian untuk halaman yang diautentikasi

masukkan deskripsi gambar di sini

Emeka Mbah
sumber
4

Jika Anda ingin menggunakan tukang pos, cara yang benar adalah dengan menggunakan header seperti itu

kunci: Otorisasi

nilai: jwt {token}

sesimpel itu.

Adi
sumber
2

Bagi orang yang menggunakan plugin wordpress Advanced Access Manager untuk membuka JWT Authentication.

Bidang Header harus menempatkan Otentikasi alih-alih Otorisasi

masukkan deskripsi gambar di sini

AAM menyebutkannya di dalam dokumentasi mereka ,

Catatan! AAM tidak menggunakan header Otorisasi standar karena dilewati oleh sebagian besar server Apache. ...


Semoga ini bisa membantu seseorang! Terima kasih atas jawaban lain banyak membantu saya juga !!

jeffsama
sumber
2
  1. Tukang pos terbuka.
  2. pergi ke bidang "header".
  3. di sana orang dapat melihat "nilai kunci" kosong.
  4. dalam jenis kunci "Otorisasi".
  5. dalam tipe nilai "Bearer (spasi) your_access_token_value".

Selesai!

Dheeraj
sumber
2

masukkan deskripsi gambar di sini

Yaitu segala sesuatu yang lain. Params, Otorisasi, Badan, Skrip Pra-permintaan, Tes kosong, cukup buka tab Header dan tambahkan seperti yang ditunjukkan pada gambar. Itu sama untuk mendapatkan permintaan juga.

coda
sumber
0

Entah bagaimana tukang pos tidak bekerja untuk saya. Saya harus menggunakan ekstensi chrome yang disebut RESTED yang berhasil.

RamanSM
sumber
0

Saya melakukan seperti yang disebutkan moplin. Tetapi dalam layanan kasus saya mengirim JWT dalam header respons, sebagai nilai di bawah kunci "Otorisasi".

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

Apa yang saya lakukan adalah, membuat variabel Global di tukang pos sebagai

key-> jwt
value-> blahblah

di permintaan masuk-> Tes Tab, tambahkan

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

pada permintaan lain pilih tab Header dan berikan

key-> Otorisasi

nilai -> {{jwt}}

Yasitha Bandara
sumber
0

Dalam versi terbaru Postman (7 ++) mungkin tidak ada bidang Bearer di Otorisasi Jadi buka tab Header

pilih kunci sebagai Otorisasi dan dalam penulisan nilai JWT

Abhishek Yadav
sumber
Untuk v7.19.0 + dan juga sudah ada untuk sementara waktu, ada Bearer Tokenpenolong di Authorizationtab, menambahkan nilai token di sini (Hardcoded atau sebagai variabel dinamis) akan membuat Authorizationheader yang sama untuk permintaan.
Danny Dainton