ความแตกต่างระหว่าง 'aud' และ 'iss' ใน jwt


13

ฉันต้องการใช้บริการการพิสูจน์ตัวตนที่มีประสิทธิภาพมากขึ้นและjwtเป็นส่วนใหญ่ของสิ่งที่ฉันต้องการทำและฉันเข้าใจวิธีการเขียนรหัส แต่ฉันมีปัญหาเล็กน้อยในการทำความเข้าใจความแตกต่างระหว่างการสงวนissและการaudเรียกร้อง ฉันเข้าใจว่าเซิร์ฟเวอร์หนึ่งกำหนดเซิร์ฟเวอร์ที่ใช้งานโทเค็นและเซิร์ฟเวอร์หนึ่งอ้างถึงแอปพลิเคชันที่มีไว้สำหรับการใช้งาน แต่วิธีที่ฉันเข้าใจว่าผู้ชมและผู้ออกของฉันเป็นสิ่งเดียวกันmyserver.comคือการออกโทเค็นเพื่อให้ผู้ที่มาmyserver.comสามารถได้รับอนุญาตและรับรองความถูกต้อง ฉันเดาว่าฉันไม่เห็นความแตกต่างระหว่างการอ้างสิทธิ์ทั้งสองแม้ว่าฉันจะรู้ว่ามีอยู่ก็ตาม
มีบทความที่ดีเขียนอยู่ที่msdn ในการอ้างสิทธิ์ที่สงวนไว้ทั้งหมดและนั่นคือสิ่งที่ฉันสับสนมากที่สุดเพราะพวกเขามี บริษัท ผู้ออกหลักทรัพย์และผู้ชมต่างกันโดยสิ้นเชิง


คุณอาจสนใจJWT RFC-7519
Laiv

คำตอบ:


10

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

สิ่งนี้อาจไม่แตกต่างกันสำหรับแอปพลิเคชันของคุณ

แต่พิจารณาแอปพลิเคชันขนาดใหญ่ คุณอาจมีเซิร์ฟเวอร์ OAuth หรือ SSO ที่ออกใบรับรองและแอปพลิเคชันที่ต้องการโทเค็นที่แสดงเซิร์ฟเวอร์ SSO ได้ตรวจสอบข้อมูลประจำตัวของผู้ใช้และได้อนุมัติผู้ใช้ให้ใช้แอปพลิเคชัน ในกรณีที่คุณอาจมีโทเค็นด้วยและ"aud": "aud.example.com""iss": "sso.example.com"


อ้อเข้าใจแล้ว. มันเป็นความเข้าใจผิดในส่วนของฉันเพราะฉันคิดสองสิ่ง: 1. คุณต้องมีทั้ง "iss" และ "aud" เป็นส่วนหนึ่งของการเรียกร้อง 2. พวกเขาจะต้องไม่เหมือนกัน เห็นได้ชัดว่านี่ไม่ใช่ความจริง ดังนั้นหากคุณมีแอปพลิเคชันเช่นของฉันคุณจะรวมการอ้างสิทธิ์สองข้อเหล่านั้นไว้ในของคุณjwtหรือปล่อยให้พวกเขาออกไป
Adam McGurk

คุณสามารถละทิ้งพวกเขาและเพิ่มพวกเขาในภายหลังเมื่อคุณมีเหตุผลที่จะใช้มัน
Paul

จะaudบางครั้งจะเป็นบุคคลที่สามหรือไม่?
Andy

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

ใช่audสามารถเป็นค่าเดียวหรือหลายอาร์เรย์ได้ มันควรจะตรงกับผู้รับหรือโปรเซสเซอร์ที่ต้องการ สมมติว่าคุณเป็นผู้ใช้ (หรือแอปพลิเคชัน) ที่ต้องการโทรหา api.example.com เพื่อเรียกใช้แบบสอบถาม หาก api.example.com เชื่อมั่นบริการรับรองความถูกต้องของบุคคลที่สาม (เช่น Auth0) เพื่อจัดการการตรวจสอบสิทธิ์บริการ auth นั้นควรเติมaudด้วย 'api.example.com' และแอปที่ 'api.example.com' ควรตรวจสอบว่าเป็น กรณี. ขอบเขตมีความละเอียดมากกว่าผู้ชมและสามารถรวมไว้ในเพย์โหลดได้เช่นกัน
พอล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.