ส่งโทเค็น JWT ในส่วนหัวด้วยบุรุษไปรษณีย์


169

ผมทดสอบการดำเนินการของ JWT Token รักษาความปลอดภัยตามออกต่อไปนี้บทความ ฉันได้รับโทเค็นจากเซิร์ฟเวอร์ทดสอบเรียบร้อยแล้ว ฉันไม่สามารถทราบได้ว่าจะให้โปรแกรมไคลเอ็นต์ POSTMAN REST ของ Chrome ส่งโทเค็นในส่วนหัวได้อย่างไร

ภาพหน้าจอของบุรุษไปรษณีย์

คำถามของฉันมีดังนี้:

1) ฉันใช้ชื่อส่วนหัวที่ถูกต้องและ / หรืออินเตอร์เฟซ POSTMAN หรือไม่

2) ฉันต้องใช้รหัส 64 เข้ารหัสโทเค็นหรือไม่ ฉันคิดว่าฉันสามารถส่งโทเค็นกลับมาได้


สวัสดีฉันจะดูโทเค็น jwt ที่ฉันได้รับใน POSTMAN ได้ที่ไหน
Usr

1
@MLondei ขึ้นอยู่กับวิธีการกำหนดค่าเซิร์ฟเวอร์การรับ มันสามารถกลับมาเป็น URL (ค้นหาในสตริง URL) หรือสามารถกลับมาในเนื้อหาการตอบกลับ (ค้นหาในฟิลด์เนื้อหาของการตอบกลับ) นี่คือสองสิ่งที่สำคัญที่ฉันรู้
Diode Dan

คำตอบ:


277

สำหรับชื่อส่วนหัวของคำขอเพียงใช้การอนุญาต สถานที่ผู้ถือก่อนโทเค็น ฉันเพิ่งลองและใช้งานได้สำหรับฉัน

การอนุญาต: ผู้ถือ TOKEN_STRING

แต่ละส่วนของ JWT เป็นค่าที่เข้ารหัส base64url


61
เช่นเดียวกับการชี้แจงฟิลด์ "ส่วนหัว" กลายเป็นการอนุญาตและฟิลด์ "ค่า" จะกลายเป็นผู้ถือ [WHITESPACE] <your-code-here>
Diode Dan

คุณรู้หรือไม่ว่าส่วนใดของฟิลด์ที่ถูกเข้ารหัส? ดูเหมือนว่าข้อมูลจะอยู่หลัง 'สุดท้าย' ตัวแยกจะให้สิ่งที่ดูเหมือนตัวละครขยะ ฉันคิดว่านี่เป็นข้อมูลที่เข้ารหัสโดยเครื่องกำเนิดสัญญาณ Token หรือไม่
Diode Dan

5
ลองดูjwt.io .There เป็นส่วนที่คุณสามารถวาง JWT และดูเนื้อหาที่ถอดรหัสได้ซึ่งเป็นวิธีที่ดีที่สุดในการดูว่าเกิดอะไรขึ้น สตริงลับของเซิร์ฟเวอร์ใช้เพื่อสร้างส่วนสุดท้ายของโทเค็น JWT ลงนามเฉพาะเพย์โหลดไม่ได้เข้ารหัสนั่นคือคุณสามารถถอดรหัสส่วนที่ 1 และ 2 ของสตริง แต่ไม่สามารถตรวจสอบได้โดยไม่มีความลับ self-issued.info/docs/draft-ietf-oauth-json-web-token.html
Mick Cullen

4
มีใครช่วยอธิบายรายละเอียดเกี่ยวกับสาเหตุที่เราต้องใส่ Bearer ต่อหน้าเจดับบลิว? นี่เป็นสัญญาณบางอย่างไปยังเซิร์ฟเวอร์ว่านี่คือ JWT หรือไม่
user137717

3
นั่นเป็นเพียงการประชุม - คุณสามารถค้นหารายละเอียดทั้งหมดได้ที่นี่: jwt.io/introduction
Michael Noyb

134

นี่คือภาพถ้ามันช่วย :)

บุรุษไปรษณีย์

ปรับปรุง:

ทีมบุรุษไปรษณีย์ได้เพิ่ม "Bearer token" ใน "แท็บการอนุญาต": บุรุษไปรษณีย์ที่อัปเดต


40

ฉันกำลังเพิ่มคำถามเล็กน้อยที่น่าสนใจซึ่งอาจช่วยให้คุณทดสอบ JWT Apis ได้

มันง่ายมากจริง ๆ

เมื่อคุณเข้าสู่ระบบใน Api ของคุณ (จุดสิ้นสุดการเข้าสู่ระบบ) คุณจะได้รับโทเค็นของคุณทันทีและ @ mick-cullen บอกว่าคุณจะต้องใช้ JWT ในส่วนหัวของคุณเป็น:

Authorization: Bearer TOKEN_STRING

ตอนนี้ถ้าคุณต้องการทำให้เป็นอัตโนมัติหรือทำให้ชีวิตของคุณง่ายขึ้นการทดสอบของคุณคุณสามารถบันทึกโทเค็นในระดับโลกที่คุณสามารถโทรหาปลายทางอื่น ๆ ทั้งหมดเช่น:

Authorization: Bearer {{jwt_token}}

ในบุรุษไปรษณีย์: จากนั้นสร้างตัวแปรโกลบอลในบุรุษไปรษณีย์ในฐานะ jwt_token = TOKEN_STRING

ในจุดสิ้นสุดการเข้าสู่ระบบของคุณ: เพื่อให้มีประโยชน์ให้เพิ่มที่จุดเริ่มต้นของแท็บการทดสอบเพิ่ม:

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

ฉันคาดเดาว่า api ของคุณคืนโทเค็นเป็น json ในการตอบสนองเป็น: {"jwt_token": "TOKEN_STRING"} อาจมีการเปลี่ยนแปลงบางอย่าง

ในบรรทัดแรกคุณเพิ่มการตอบกลับไปยัง data varibale ทำความสะอาดโลกของคุณและกำหนดค่า

ดังนั้นตอนนี้คุณมีโทเค็นของคุณเกี่ยวกับตัวแปรส่วนกลางสิ่งที่ทำให้การใช้งานง่ายขึ้นคือการอนุญาต: ผู้ถือ {{jwt_token}} ในทุกจุดปลายทางของคุณ

หวังว่าเคล็ดลับนี้จะช่วยให้


แก้ไข
สิ่งที่ต้องอ่าน

เกี่ยวกับการทดสอบบุรุษไปรษณีย์: ตัวอย่างการทดสอบ

Command Line: Newman

CI: ผสานรวมกับเจนกินส์

โพสต์บล็อกที่ดี: ระบบทดสอบอัตโนมัติ API หลัก


น่าสนใจฉันไม่คุ้นเคยกับแนวคิดของTestแท็บและการเข้ารหัสของบุรุษไปรษณีย์ มีทรัพยากรที่คุณแนะนำให้เริ่มต้นกับสิ่งนี้หรือไม่?
Diode Dan

ใช่มีบางอย่างที่ฉันพบว่ามีประโยชน์: * getpostman.com/docs/testing_examples * blog.testproject.io/2016/06/22/master-api-test-automation * sm-cloud.com/testing-api-with -postman
Pablo Palacios

อันที่จริงบุรุษไปรษณีย์นั้นน่าสนใจและแข็งแกร่งมากเมื่อพูดถึงการทดสอบอัตโนมัติ คุณสามารถกำหนดค่าบุรุษไปรษณีย์ในลักษณะที่สามารถสร้างตัวแปร Global data แบบสุ่มหรือตัวแปร Environment ที่คุณสามารถเรียกใช้ในการทดสอบได้ และทำการวนซ้ำและทดสอบการตอบสนองใด ๆ เป็นการทดสอบหน่วยปลายทาง บันทึกและค้นหาข้อผิดพลาดเมื่อคุณเปลี่ยนรหัส ฉันไม่ได้ใช้ยูทิลิตี้บรรทัดคำสั่ง แต่ฉันเข้าใจว่าคุณสามารถกำหนดค่าให้รันใน ci-pip ของคุณได้
Pablo Palacios

คุณสามารถอ่านเกี่ยวกับบรรทัดคำสั่งได้ที่นี่: 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 providedในการใช้django แก้ไขได้ด้วยBearer <token> jwt <token>ขอบคุณสำหรับการแก้ปัญหา
S_M

7

นี่คือวิธีการตั้งค่าโทเค็นนี้โดยอัตโนมัติ

ตามคำขอเข้าสู่ระบบ / รับรองความถูกต้องของคุณ

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นสำหรับหน้ารับรองความถูกต้อง

ป้อนคำอธิบายรูปภาพที่นี่


4

หากคุณต้องการใช้บุรุษไปรษณีย์วิธีที่ถูกต้องคือใช้ส่วนหัวเช่นนี้

คีย์: การอนุญาต

ค่า: jwt {token}

ง่ายเหมือนที่


2

สำหรับผู้ที่ใช้เวิร์ดเพรสปลั๊กอินAdvanced Access Managerเพื่อเปิดการตรวจสอบ JWT

ฟิลด์ส่วนหัวควรวางการตรวจสอบสิทธิ์แทนการให้สิทธิ์

ป้อนคำอธิบายรูปภาพที่นี่

AAM กล่าวว่าภายในของพวกเขาเอกสาร ,

บันทึก! AAM ไม่ได้ใช้หัวข้อการอนุญาตมาตรฐานเนื่องจากถูกข้ามโดยเซิร์ฟเวอร์ Apache ส่วนใหญ่ ...


หวังว่ามันจะช่วยให้ใครบางคน! ขอบคุณสำหรับคำตอบอื่น ๆ ที่ช่วยฉันด้วยเช่นกัน !!


2
  1. เปิดบุรุษไปรษณีย์
  2. ไปที่ฟิลด์ "ส่วนหัว"
  3. มีใครสามารถเห็นช่องว่าง "ค่าคีย์"
  4. ในประเภทคีย์ "การอนุญาต"
  5. ในประเภทค่า "ผู้ถือ (ช่องว่าง) your_access_token_value"

ทำ!


2

ป้อนคำอธิบายรูปภาพที่นี่

ทุกอย่างอื่นเช่น พารามิเตอร์, การอนุญาต, เนื้อหา, สคริปต์การร้องขอล่วงหน้าการทดสอบว่างเปล่าเพียงเปิดแท็บส่วนหัวและเพิ่มตามที่แสดงในภาพ มันเหมือนกันสำหรับคำขอ GET เช่นกัน


0

อย่างใดบุรุษไปรษณีย์ไม่ได้ทำงานสำหรับฉัน ฉันต้องใช้ส่วนขยายของ Chrome ที่เรียกว่า RESTED ซึ่งใช้งานได้


0

ฉันทำตามที่ moplin พูดถึง แต่ในกรณีบริการของฉันส่ง JWT ในส่วนหัวการตอบสนองเป็นค่าภายใต้คีย์ "การอนุญาต"

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

ในบุรุษไปรษณีย์รุ่นล่าสุด (7 ++) อาจจะไม่มีฟิลด์ผู้ถือในการอนุญาตดังนั้นไปที่แท็บส่วนหัว

เลือกคีย์เป็นการอนุญาตและในการเขียนค่า JWT


สำหรับ v7.19.0 + และมีอยู่พักหนึ่งมีBearer Tokenผู้ช่วยในAuthorizationแท็บเพิ่มค่าโทเค็นที่นี่ (Hardcoded หรือตัวแปรแบบไดนามิก) จะสร้างAuthorizationส่วนหัวเดียวกันสำหรับคำขอ
Danny Dainton
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.