อะไรคือความแตกต่างที่สำคัญระหว่างการตรวจสอบ JWT และ OAuth?


356

ฉันมี SPA ใหม่พร้อมโมเดลการพิสูจน์ตัวตนแบบไร้รัฐโดยใช้ JWT ฉันมักถูกขอให้อ้างถึง OAuth สำหรับกระบวนการตรวจสอบสิทธิ์เช่นขอให้ฉันส่ง 'โทเค็นโทเค็น' สำหรับทุกคำขอแทนที่จะเป็นส่วนหัวโทเค็นธรรมดา แต่ฉันคิดว่า OAuth นั้นซับซ้อนกว่าการรับรองความถูกต้อง JWT ธรรมดา อะไรคือความแตกต่างที่สำคัญฉันควรทำให้การตรวจสอบ JWT มีลักษณะเหมือน OAuth หรือไม่

ฉันใช้ JWT เป็น XSRF-TOKEN ของฉันเพื่อป้องกัน XSRF แต่ฉันถูกขอให้แยกพวกเขาหรือไม่ ฉันควรแยกพวกเขาออกจากกันหรือไม่? ความช่วยเหลือใด ๆ ที่นี่จะได้รับการชื่นชมและอาจนำไปสู่ชุดแนวทางสำหรับชุมชน

คำตอบ:


330

TL; DR หากคุณมีสถานการณ์ที่ง่ายมากเช่นแอปพลิเคชันไคลเอนต์เดียว API เดียวก็อาจไม่ได้ผลในการใช้งาน OAuth 2.0 ในทางกลับกันไคลเอนต์จำนวนมากที่แตกต่างกัน ฯลฯ ) จากนั้นการผสานกับกฎ OAuth 2.0 อาจทำให้จัดการได้ง่ายกว่าการพยายามพลิกระบบของคุณเอง


ตามที่ระบุไว้ในคำตอบอื่น JWT ( Learn JSON Web Tokens ) เป็นเพียงรูปแบบโทเค็นมันกำหนดกลไกขนาดกะทัดรัดและมีอยู่ในตัวเองสำหรับการส่งข้อมูลระหว่างบุคคลในวิธีที่สามารถตรวจสอบและเชื่อถือได้เพราะมีการเซ็นชื่อแบบดิจิทัล นอกจากนี้กฎการเข้ารหัสของ JWT ยังทำให้โทเค็นเหล่านี้ใช้งานได้ง่ายในบริบทของ HTTP

การมีอยู่ในตัวเอง (โทเค็นจริงมีข้อมูลเกี่ยวกับเรื่องที่กำหนด) พวกเขายังเป็นตัวเลือกที่ดีสำหรับการใช้กลไกการพิสูจน์ตัวตนแบบไร้รัฐ (aka Look mum, no session! ) เมื่อไปตามเส้นทางนี้และสิ่งเดียวที่ปาร์ตี้ต้องแสดงเพื่อให้ได้รับอนุญาตให้เข้าถึงทรัพยากรที่มีการป้องกันคือโทเค็นเองโทเค็นที่สงสัยสามารถเรียกได้ว่าโทเค็นผู้ถือ

ในทางปฏิบัติสิ่งที่คุณทำอยู่แล้วสามารถจัดประเภทตามโทเค็นผู้ถือ อย่างไรก็ตามโปรดพิจารณาว่าคุณไม่ได้ใช้โทเค็นผู้ถือตามที่ระบุไว้ในข้อกำหนดที่เกี่ยวข้องของ OAuth 2.0 (ดูRFC 6750 ) นั่นหมายความว่าต้องอาศัยAuthorizationส่วนหัว HTTP และใช้Bearerรูปแบบการตรวจสอบสิทธิ์

เกี่ยวกับการใช้ JWT เพื่อป้องกัน CSRF โดยไม่ทราบรายละเอียดที่แน่นอนมันเป็นการยากที่จะยืนยันความถูกต้องของการปฏิบัตินั้น แต่ตามจริงแล้วดูเหมือนจะไม่ถูกต้องและ / หรือคุ้มค่า บทความต่อไปนี้ ( คุกกี้ vs โทเค็น: คู่มือสรุป ) อาจเป็นประโยชน์สำหรับการอ่านในเรื่องนี้โดยเฉพาะอย่างยิ่งส่วนการป้องกัน XSS และ XSRF

หนึ่งชิ้นสุดท้ายของคำแนะนำถึงแม้คุณจะไม่จำเป็นต้องไป OAuth เต็ม 2.0 ผมจะขอแนะนำในการส่งผ่านการเข้าถึงของคุณโทเค็นภายในAuthorizationหัวแทนจะมีส่วนหัวที่กำหนดเอง หากพวกเขาเป็นโทเค็นผู้ถือจริงๆทำตามกฎของ RFC 6750 ถ้าไม่คุณสามารถสร้างรูปแบบการรับรองความถูกต้องที่กำหนดเองและยังคงใช้ส่วนหัวนั้น

ส่วนหัวการอนุญาตได้รับการยอมรับและได้รับการดูแลเป็นพิเศษโดยพร็อกซี HTTP และเซิร์ฟเวอร์ ดังนั้นการใช้ส่วนหัวดังกล่าวในการส่งโทเค็นการเข้าถึงไปยังเซิร์ฟเวอร์ทรัพยากรจะช่วยลดโอกาสในการรั่วไหลหรือการจัดเก็บที่ไม่ได้ตั้งใจของการร้องขอที่รับรองความถูกต้องโดยทั่วไปและโดยเฉพาะอย่างยิ่งส่วนหัวการอนุญาต

(ที่มา: RFC 6819, ส่วน 5.4.1 )


2
หมายความว่าถ้าฉันใช้การตรวจสอบความถูกต้อง JWT ในแอพมือถือฉันไม่จำเป็นต้องรวม CSRF ในคำขอ POST ไม่เหมือนกับส่วนต่อประสานเว็บที่มีฟอร์ม?
user805981

2
Tokens vs Tokens: The Definitive Guide คือauth0.com/blog/cookies-vs-tokens-definitive-guideไม่ทำงานนี่เป็นอีกหนึ่งโพสต์การสนทนาที่ยอดเยี่ยม: stackoverflow.com/questions/37582444/ …
Siddharth Jain

1
"พวกเขายังเป็นตัวเลือกที่ดีสำหรับการใช้กลไกการตรวจสอบความถูกต้องแบบไร้รัฐ (aka Look mum, no session!)" หากคุณต้องการวิธีในการทำให้โทเค็นเป็นโมฆะเพราะสมมติว่ามีการรั่วไหลหรือถูกขัดขวาง ไม่ปลอดภัยพอเนื่องจากโทเค็นยังคงถูกต้องคุณต้องเก็บไว้ในฐานข้อมูลบางส่วนดังนั้นฉันคิดว่าต้องมีแนวคิดบางอย่างของเซสชันบนเซิร์ฟเวอร์เพื่อความปลอดภัยหรือบัญชีดำโทเค็นง่าย ๆ คุณอาจพูดว่าใช้โทเค็น "รีเฟรช" สำหรับสิ่งนี้ แต่โทเค็นการรีเฟรชสามารถถูกดักจับได้เช่นกัน
Konrad

1
@ Konrad ฉันใช้กลไกที่คล้ายกันซึ่งจัดเก็บโทเค็นที่ถูกต้องที่ไม่ได้ใช้ในตารางปล่อยพวกเขาจากที่นั่นเมื่อพวกเขาหมดอายุ สำหรับคำขอที่เข้ามาแต่ละครั้งฉันได้เขียนรหัสเพื่อข้ามการตรวจสอบโทเค็นขาเข้ากับ "โทเค็นที่ไม่ได้ใช้ที่ไม่ได้ใช้" แม้ว่ามันจะใช้ได้ดีฉันก็มีข้อสงสัยอยู่เสมอ - ควรมีวิธีที่ดีกว่าในการจัดการโทเค็นที่ไม่ได้ใช้ แต่ยังคงใช้ได้
เทค Junkie

2
ในทางกลับกันโทเค็นการรีเฟรชเพียงแค่ทำให้การใช้งานไคลเอนต์ยุ่งยาก เนื่องจากหากโทเค็นการเข้าถึงของคุณหมดอายุคุณต้องจัดการกับสิ่งนั้นผู้ใช้จะโกรธถ้าคุณเพิ่งจะออกจากระบบโดยไม่ต้องมีการรีเฟรชเซสชันด้วยตนเอง (เช่นธนาคารทำ) มันเป็นเรื่องที่ต้องทำมากกว่านี้อีกทั้งการใช้วิธีการรับรองความถูกต้องมาตรฐาน (OID) และการอนุญาต (OAuth) มักเป็นเรื่องที่เกินความจำเป็น
Konrad

281

OAuth 2.0 กำหนดโปรโตคอลเช่นระบุวิธีโอนโทเค็น JWT กำหนดรูปแบบโทเค็น

OAuth 2.0 และ "การรับรองความถูกต้อง JWT" มีลักษณะที่คล้ายกันเมื่อมาถึงสเตจ (2nd) ที่ไคลเอ็นต์แสดงโทเค็นไปยังเซิร์ฟเวอร์ทรัพยากร: โทเค็นจะถูกส่งผ่านในส่วนหัว

แต่ "การรับรองความถูกต้อง JWT" ไม่ใช่มาตรฐานและไม่ได้ระบุวิธีที่ลูกค้าได้รับโทเค็นตั้งแต่แรก (ระยะที่ 1) นั่นคือที่มาของความซับซ้อนของ OAuth ที่รับรู้: มันยังกำหนดวิธีการต่าง ๆ ที่ลูกค้าสามารถรับโทเค็นการเข้าถึงจากสิ่งที่เรียกว่าเซิร์ฟเวอร์การอนุญาต

ดังนั้นความแตกต่างที่แท้จริงคือ JWT เป็นเพียงรูปแบบโทเค็น OAuth 2.0 เป็นโปรโตคอล (ซึ่งอาจใช้ JWT เป็นรูปแบบโทเค็น)


10
o การใช้งานโพรโทคอล oAuth ใช้ JWT เป็นรูปแบบโทเค็นหรือไม่สำหรับกรณีส่วนใหญ่ ถ้าไม่ใช่สิ่งที่พบบ่อยที่สุด?
James Wierzba

14
รูปแบบของโทเค็นใน oauth นั้นไม่ได้ถูกกำหนด แต่ JWT ควรทำงานได้ดี
vikingsteve

129

อันดับแรกเราต้องแยกความแตกต่าง JWT และ OAuth โดยทั่วไป JWT เป็นรูปแบบโทเค็น OAuth เป็นโปรโตคอลการอนุญาตที่สามารถใช้ JWT เป็นโทเค็นได้ OAuth ใช้ที่เก็บข้อมูลฝั่งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์ หากคุณต้องการออกจากระบบจริงคุณต้องไปกับ OAuth2 การตรวจสอบด้วยโทเค็น JWT ไม่สามารถออกจากระบบได้จริง เพราะคุณไม่มีเซิร์ฟเวอร์การตรวจสอบความถูกต้องที่ติดตามโทเค็น หากคุณต้องการให้ API แก่ลูกค้าบุคคลที่สามคุณต้องใช้ OAuth2 ด้วย OAuth2 ยืดหยุ่นได้มาก การติดตั้ง JWT นั้นง่ายมากและใช้เวลาไม่นาน หากแอปพลิเคชันของคุณต้องการความยืดหยุ่นเช่นนี้คุณควรไปกับ OAuth2 แต่ถ้าคุณไม่ต้องการสถานการณ์แบบใช้กรณีนี้การใช้ OAuth2 นั้นเป็นการเสียเวลาเปล่า

โทเค็น XSRF จะถูกส่งไปยังไคลเอนต์ในทุก ๆ หัวข้อการตอบสนอง ไม่สำคัญว่าจะส่งโทเค็น CSRF ในโทเค็น JWT หรือไม่เพราะโทเค็น CSRF นั้นปลอดภัยด้วยตัวเอง ดังนั้นการส่งโทเค็น CSRF ใน JWT จึงไม่จำเป็น


7
ฉันไม่เข้าใจว่าทำไมคำตอบนี้มี upvotes มากมายกล่าวว่า "OAuth เป็นกรอบการพิสูจน์ตัวตน" และนี่เป็นความผิดทั้งหมด OAuth เป็นโปรโตคอลการอนุญาตและโปรโตคอลการอนุญาตเท่านั้น
Michael

4
สวัสดี @Michael มีความเข้าใจผิดเกี่ยวกับเรื่องนี้มากเกินไป ฉันแก้ไขความคิดเห็นของฉันขอบคุณ
MelikşahŞimşek

6
@Michael โปรดขอบคุณคำตอบของ bcz อื่น ๆ ที่เขาแบ่งปันความรู้ที่ละเอียดของเขากับเราและฉันชอบคำตอบจริงๆ
Yasir Shabbir Choudhary

พวกคุณกำลังพูดว่า Oauth เป็นเพียงส่วนหนึ่งของมาตรฐานที่ผู้พัฒนาควรปฏิบัติตามหรือไม่ หรือว่าเป็นกรอบจริงๆ
StormTrooper

65

JWT (JSON Web Tokens) - เป็นเพียงรูปแบบโทเค็น โทเค็น JWT เป็นโครงสร้างข้อมูลที่เข้ารหัสของ JSON ประกอบด้วยข้อมูลเกี่ยวกับผู้ออกหัวเรื่อง (การอ้างสิทธิ์) เวลาหมดอายุเป็นต้นซึ่งมีการเซ็นชื่อเพื่อพิสูจน์การปลอมแปลงและความถูกต้องและสามารถเข้ารหัสเพื่อปกป้องข้อมูลโทเค็นโดยใช้วิธีสมมาตรหรือไม่สมมาตร JWT นั้นง่ายกว่า SAML 1.1 / 2.0 และรองรับโดยอุปกรณ์ทั้งหมดและมันมีประสิทธิภาพมากกว่า SWT (Simple Web Token)

OAuth2 - OAuth2 แก้ปัญหาที่ผู้ใช้ต้องการเข้าถึงข้อมูลโดยใช้ซอฟต์แวร์ไคลเอ็นต์เช่นเบราส์เว็บแอพพื้นฐานแอพมือถือดั้งเดิมหรือแอพเดสก์ท็อป OAuth2 เป็นเพียงการให้สิทธิ์ซอฟต์แวร์ไคลเอ็นต์สามารถได้รับอนุญาตให้เข้าถึงทรัพยากรในนามของผู้ใช้ปลายทางโดยใช้โทเค็นการเข้าถึง

OpenID Connect - OpenID Connect จะสร้างจากด้านบนของ OAuth2 และเพิ่มการรับรองความถูกต้อง OpenID Connect เพิ่มข้อ จำกัด บางอย่างให้กับ OAuth2 เช่น UserInfo Endpoint, ID Token, การค้นพบและการลงทะเบียนแบบไดนามิกของผู้ให้บริการ OpenID Connect และการจัดการเซสชัน JWT เป็นรูปแบบบังคับสำหรับโทเค็น

การป้องกัน CSRF - คุณไม่จำเป็นต้องใช้การป้องกัน CSRF หากคุณไม่ได้เก็บโทเค็นในคุกกี้ของเบราว์เซอร์

คุณสามารถอ่านรายละเอียดเพิ่มเติมได้ที่นี่http://proficientblog.com/microservices-security/


3
ไม่มีคุกกี้ == ไม่มีการป้องกัน CSRF หากคุณไม่ใช้คุกกี้เพื่อขออนุญาตคุณไม่ต้องกังวลกับการปกป้อง CSRF
niranjan harpale

51

ดูเหมือนว่าทุกคนที่ตอบที่นี่พลาดจุดที่สงสัยของ OAUTH

จากวิกิพีเดีย

OAuth เป็นมาตรฐานแบบเปิดสำหรับการมอบสิทธิ์การเข้าถึงซึ่งโดยทั่วไปใช้เป็นวิธีสำหรับผู้ใช้อินเทอร์เน็ตในการอนุญาตให้เว็บไซต์หรือแอปพลิเคชันเข้าถึงข้อมูลของพวกเขาบนเว็บไซต์อื่น ๆ แต่ไม่ได้ให้รหัสผ่านแก่พวกเขา [1] กลไกนี้ใช้โดย บริษัท เช่น Google, Facebook, Microsoft และ Twitter เพื่ออนุญาตให้ผู้ใช้แบ่งปันข้อมูลเกี่ยวกับบัญชีของตนกับแอปพลิเคชันหรือเว็บไซต์ของบุคคลที่สาม

จุดสำคัญที่นี่คือ access delegationจุดสำคัญที่นี่คือทำไมทุกคนจะสร้าง OAUTH เมื่อมีการพิสูจน์ตัวตนโดยใช้ ID / pwd สนับสนุนโดยรับรองความถูกต้องหลาย ๆ อย่างเช่น OTPs และสามารถรักษาความปลอดภัยโดย JWTs ซึ่งใช้เพื่อรักษาความปลอดภัยการเข้าถึงเส้นทาง (เช่นขอบเขตใน OAUTH) และตั้งค่าการหมดอายุ เข้าไป

ไม่มีจุดประสงค์ในการใช้ OAUTH หากผู้บริโภคเข้าถึงทรัพยากรของพวกเขา (จุดสิ้นสุดของคุณ) ผ่านเว็บไซต์ที่เชื่อถือได้ (หรือแอป) ซึ่งโฮสต์ไว้อีกครั้งในจุดสิ้นสุดของคุณ

คุณสามารถใช้การตรวจสอบสิทธิ์ OAUTH ได้ก็ต่อเมื่อคุณอยู่OAUTH providerในกรณีที่เจ้าของทรัพยากร (ผู้ใช้) ต้องการเข้าถึง (ของคุณ) ทรัพยากร (จุดสิ้นสุด) ผ่านไคลเอนต์บุคคลที่สาม (แอปภายนอก) และมันถูกสร้างขึ้นเพื่อจุดประสงค์เดียวกันแม้ว่าคุณจะสามารถใช้งานในทางที่ผิดได้

หมายเหตุสำคัญอื่น:
คุณใช้คำauthenticationสำหรับ JWT และ OAUTH ได้อย่างอิสระแต่ไม่มีกลไกการตรวจสอบสิทธิ์ ใช่หนึ่งเป็นกลไกโทเค็นและอื่น ๆ เป็นโปรโตคอล แต่เมื่อผ่านการรับรองความถูกต้องพวกเขาจะใช้สำหรับการอนุญาตเท่านั้น (การจัดการการเข้าถึง) คุณต้องสำรอง OAUTH ด้วยการตรวจสอบประเภท OPENID หรือข้อมูลรับรองลูกค้าของคุณเอง


4
OAuth สามารถใช้กับลูกค้าของคุณเองได้ไม่จำเป็นต้องเป็นแค่บุคคลที่สาม ประเภทการให้สิทธิ์รับรองรหัสผ่านทำเช่นนั้นทุกประการ
harpratap

1
ฉันกำลังมองหา google สำหรับคำตอบที่เป็นรูปธรรม แต่ไม่สามารถหาได้ ทุกคนกำลังพูดถึงคำจำกัดความเช่นโทเค็น vs โปรโตคอล คำตอบของคุณอธิบายถึงวัตถุประสงค์ที่แท้จริงของการใช้อย่างใดอย่างหนึ่งเหนือสิ่งอื่นใด ขอบคุณมาก!
Vivek Goel

9

ค้นหาความแตกต่างที่สำคัญระหว่าง JWT และ OAuth

  1. OAuth 2.0 กำหนดโปรโตคอล & JWT กำหนดรูปแบบโทเค็น

  2. OAuth สามารถใช้ JWT เป็นรูปแบบโทเค็นหรือโทเค็นการเข้าถึงซึ่งเป็นโทเค็นผู้ถือ

  3. การเชื่อมต่อ OpenID ส่วนใหญ่ใช้ JWT เป็นรูปแบบโทเค็น


6

JWT เป็นมาตรฐานเปิดที่กำหนดวิธีการที่กะทัดรัดและอยู่ในตัวสำหรับการส่งข้อมูลอย่างปลอดภัยระหว่างฝ่ายต่างๆ เป็นโปรโตคอลการตรวจสอบความถูกต้องที่เราอนุญาตให้โอนการอ้างสิทธิ์ (โทเค็น) เพื่อถ่ายโอนระหว่างสองฝ่าย (ไคลเอนต์และเซิร์ฟเวอร์) และโทเค็นจะออกให้เมื่อมีการระบุลูกค้า เราจะส่งโทเค็นตามคำขอแต่ละครั้งในภายหลัง

โดยที่ OAuth2 เป็นเฟรมเวิร์กการอนุญาตซึ่งมีโพรซีเดอร์และการตั้งค่าทั่วไปที่กำหนดโดยเฟรมเวิร์ก JWT สามารถใช้เป็นกลไกภายใน OAuth2

คุณสามารถอ่านเพิ่มเติมได้ที่นี่

OAuth หรือ JWT ใช้ตัวไหนและทำไม?


5

คำถามนี้เป็นคำถามทั่วไป แต่ก็ไม่สมเหตุสมผลนัก JWT เป็น Token ประเภทหนึ่งและ OAuth เป็น Framework ที่อธิบายวิธีแจกจ่ายโทเค็น

เราหมายถึงอะไรโดย "กรอบ" เพียงลำดับของการร้องขอและการตอบกลับและรูปแบบของสิ่งเหล่านั้นที่สามารถและควรจะใช้เพื่อขอโทเค็น OAuthv2 อธิบาย "กระแส" แยกต่างหากหรือประเภทการให้สิทธิ์สำหรับสถานการณ์ที่แตกต่างกันและมีส่วนขยายที่แตกต่างกัน (เช่น PKCE) สำหรับการขยายความปลอดภัยของกระแสเฉพาะ

ผลลัพธ์ของคำขอสำหรับโทเค็นผ่านการให้สิทธิ์ OAuthV2 คือ ... โทเค็น สิ่งนั้นจะถูกใช้เป็น "ผู้ถือโทเค็น" ซึ่งหมายความว่าฝ่ายใดก็ตามที่ถือโทเค็นสามารถนำเสนอได้เมื่อทำการร้องขอ API สำหรับบริการ (เช่น "ยอดคงเหลือในบัตรค่าที่เก็บไว้ของฉันคืออะไร") ในฐานะที่เป็นโทเค็นผู้ถือมันทำงานเหมือนเงินสด หากคุณถือมันคุณสามารถใช้มัน (แม้ว่าจะแตกต่างจากเงินสดเงินโทเค็นไม่ได้ใช้มันและเสียอาจคล้ายคลึงกันที่ดีกว่าคือตั๋วไปตลอดทั้งวันในระบบขนส่งสาธารณะหรือตั๋วทั้งวันที่ Disneyworld)

JWT เป็นโทเค็นบางประเภทและ JWT สามารถใช้เป็นโทเค็น OAuth Bearer ได้อย่างแน่นอน ในความเป็นจริงนี่คือการปฏิบัติที่พบบ่อยที่สุด ด้วยเหตุนี้ "JWT vs OAuth" จึงเป็นการเปรียบเทียบแอปเปิ้ลกับแอปเปิ้ลเกวียน

บ่อยครั้งที่ผู้คนคิดว่า "OAuth โทเค็น" มักจะหมายถึงโทเค็นทึบแสง - ลำดับแบบสุ่มของตัวอักษรและตัวเลขที่ไม่มีความหมายโดยธรรมชาติ - ที่ได้รับจากโอสถโทเค็นของ OAuth ซึ่งสามารถตรวจสอบได้ แต่นี่ไม่ใช่โทเค็น OAuth ชนิดเดียวเท่านั้น โทเค็นทึบแสงเป็นโทเค็นชนิดหนึ่ง JWT สามารถใช้เป็นโทเค็น OAuth ประเภทอื่นได้

ในทางตรงกันข้าม JWT ไม่ทึบแสง JWT ไม่ใช่ "ตัวชี้" หรืออ้างอิงถึงข้อมูล มันมีข้อมูลเฉพาะจำนวนมากที่สามารถแยกและตีความโดยฝ่ายใดก็ตามที่มีโทเค็น เนื่องจาก JWT มีข้อมูลจริง JWT จึงมีขนาดใหญ่ 300 ไบต์, 500 ไบต์หรือมากกว่านั้นขึ้นอยู่กับการอ้างสิทธิ์ที่อยู่ในนั้นและอัลกอริทึมที่ใช้ในการเซ็นชื่อ เมื่อผู้คนพูดว่า "JWT ตรวจสอบตัวเอง" สิ่งที่พวกเขาหมายถึงคือเจ้าของ JWT คนใดก็ได้ที่สามารถเปิดตรวจสอบความถูกต้องแล้วทำการตัดสินใจอนุญาตตามการอ้างสิทธิ์ที่ปรากฏในนั้น การตรวจสอบ JWT หมายถึง: การตรวจสอบโครงสร้างถอดรหัสการเข้ารหัส base64 การตรวจสอบคีย์นั้นถูกต้องตรวจสอบลายเซ็นจากนั้นตรวจสอบการอ้างสิทธิ์ที่จำเป็นอยู่ในโทเค็นตรวจสอบการหมดอายุ มันไม่ใช่เรื่องง่าย ค่อนข้างเป็นกระบวนการที่มีหลายขั้นตอน แต่แน่นอนว่ามีไลบรารีจำนวนมากในภาษาการเขียนโปรแกรมต่าง ๆ ที่สอดคล้องกับสิ่งนี้และแน่นอนว่ามีนโยบาย VerifyJWT ที่ช่วยคุณทำสิ่งนี้ภายในพร็อกซี Apigee Edge API ประเด็นก็คือผู้ถือหรือผู้รับสามารถตรวจสอบโทเค็นได้ ด้วยเหตุนี้เราจึงบอกว่า JWT รองรับ "Federation" - ทุกคนสามารถสร้างโทเค็นได้และทุกคนสามารถอ่านและตรวจสอบโทเค็นได้

การเรียกร้องที่กำหนดเอง ทั้งโทเค็น JWT และโทเค็น OAuth แบบทึบสามารถเรียกร้องสิทธิ์แบบกำหนดเองเกี่ยวกับเรื่องนี้ได้ ความปลอดภัย ทั้งคู่เป็นโทเค็นผู้ถือ ทั้งสองจำเป็นต้องได้รับการปกป้องเป็นความลับ การหมดอายุ ทั้งสองสามารถทำเครื่องหมายด้วยการหมดอายุ ทั้งสามารถรีเฟรช กลไกการพิสูจน์ตัวตนหรือประสบการณ์ ทั้งสองสามารถนำเสนอประสบการณ์ผู้ใช้ที่เหมือนกัน


0

Jwt เป็นชุดคำสั่งที่เข้มงวดสำหรับการออกและตรวจสอบโทเค็นการเข้าถึงที่ลงชื่อ โทเค็นมีการอ้างสิทธิ์ที่แอพใช้เพื่อ จำกัด การเข้าถึงผู้ใช้

OAuth2 ในทางกลับกันไม่ใช่โปรโตคอล แต่เป็นกรอบการให้สิทธิ์ที่ได้รับมอบหมาย คิดแนวทางที่มีรายละเอียดมาก ๆ เพื่อให้ผู้ใช้และแอปพลิเคชั่นอนุญาตการอนุญาตเฉพาะแอปพลิเคชันอื่น ๆ ในการตั้งค่าส่วนตัวและสาธารณะ OpenID Connect ที่อยู่ด้านบนของ OAUTH2 ให้การรับรองความถูกต้องและการอนุญาตมีรายละเอียดว่าบทบาทที่แตกต่างกันหลายอย่างผู้ใช้ในระบบของคุณแอพฝั่งเซิร์ฟเวอร์เช่น API และไคลเอนต์เช่นเว็บไซต์หรือแอพมือถือทั่วไป

หมายเหตุ oauth2 สามารถทำงานกับ jwt, การปรับใช้ที่ยืดหยุ่น, ขยายได้ไปยังแอ็พพลิเคชันที่ต่างกัน


ดูเหมือนว่าคุณมีสิ่งนี้ย้อนหลัง
jbruni
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.