ฉันต้องการเข้าใจว่าการรับรองความถูกต้องโดยใช้โทเค็นหมายถึงอะไร ฉันค้นหาอินเทอร์เน็ต แต่ไม่พบสิ่งที่เข้าใจได้
ฉันต้องการเข้าใจว่าการรับรองความถูกต้องโดยใช้โทเค็นหมายถึงอะไร ฉันค้นหาอินเทอร์เน็ต แต่ไม่พบสิ่งที่เข้าใจได้
คำตอบ:
ฉันคิดว่ามันอธิบายได้ดีที่นี่ - อ้างอิงเพียงประโยคสำคัญของบทความยาว:
แนวคิดทั่วไปที่อยู่เบื้องหลังระบบการตรวจสอบความถูกต้องด้วยโทเค็นนั้นง่าย อนุญาตให้ผู้ใช้ป้อนชื่อผู้ใช้และรหัสผ่านของพวกเขาเพื่อรับโทเค็นที่ช่วยให้พวกเขาดึงทรัพยากรที่เฉพาะเจาะจง - โดยไม่ต้องใช้ชื่อผู้ใช้และรหัสผ่านของพวกเขา เมื่อได้รับโทเค็นแล้วผู้ใช้สามารถเสนอโทเค็นซึ่งให้การเข้าถึงทรัพยากรที่เจาะจงสำหรับช่วงเวลา - ไปยังไซต์ระยะไกล
กล่าวอีกนัยหนึ่ง: เพิ่มการอ้อมหนึ่งระดับสำหรับการรับรองความถูกต้อง - แทนที่จะต้องรับรองความถูกต้องด้วยชื่อผู้ใช้และรหัสผ่านสำหรับทรัพยากรที่ได้รับการป้องกันแต่ละครั้งผู้ใช้จะตรวจสอบสิทธิ์ด้วยวิธีนั้นหนึ่งครั้ง และใช้โทเค็นนั้นสำหรับการตรวจสอบเพิ่มเติมระหว่างเซสชัน
ข้อดีมีมากมาย - เช่นผู้ใช้สามารถส่งโทเค็นได้เมื่อพวกเขาได้รับมันไปยังระบบอัตโนมัติอื่น ๆ ที่พวกเขาเต็มใจที่จะไว้วางใจในเวลา จำกัด และทรัพยากรที่ จำกัด แต่จะไม่เต็มใจ เพื่อไว้วางใจกับชื่อผู้ใช้และรหัสผ่านของพวกเขา (เช่นกับทรัพยากรที่พวกเขาได้รับอนุญาตให้เข้าถึงตลอดไปหรืออย่างน้อยก็จนกว่าพวกเขาจะเปลี่ยนรหัสผ่าน)
หากมีสิ่งใดที่ยังไม่ชัดเจนโปรดแก้ไขคำถามของคุณเพื่อชี้แจงว่าอะไรไม่ชัดเจน 100% สำหรับคุณและฉันมั่นใจว่าเราสามารถช่วยคุณได้
จากAuth0.com
การรับรองความถูกต้องตามโทเค็นอาศัยโทเค็นที่ลงชื่อซึ่งถูกส่งไปยังเซิร์ฟเวอร์ในแต่ละคำขอ
ประโยชน์ของการใช้วิธีที่ใช้โทเค็นคืออะไร
ข้ามโดเมน / CORS:คุกกี้ + CORS เล่นได้ไม่ดีในโดเมนที่ต่างกัน วิธีการที่ใช้โทเค็นช่วยให้คุณทำการโทร AJAX ไปยังเซิร์ฟเวอร์ใด ๆ บนโดเมนใด ๆ เนื่องจากคุณใช้ส่วนหัว HTTP เพื่อส่งข้อมูลผู้ใช้
ไร้สัญชาติ (ความยืดหยุ่นด้านเซิร์ฟเวอร์หรือ aka):ไม่จำเป็นต้องเก็บเซสชันไว้โทเค็นเป็นเอนทิตีที่มีอยู่ในตัวเองที่สื่อถึงข้อมูลผู้ใช้ทั้งหมด ส่วนที่เหลือของรัฐอาศัยอยู่ในคุกกี้หรือที่เก็บข้อมูลในตัวเครื่องบนฝั่งไคลเอ็นต์
CDN:คุณสามารถให้บริการสินทรัพย์ทั้งหมดของแอปของคุณจาก CDN (เช่น javascript, HTML, รูปภาพ, ฯลฯ ) และฝั่งเซิร์ฟเวอร์ของคุณเป็นเพียง API
Decoupling:คุณไม่ได้เชื่อมโยงกับรูปแบบการตรวจสอบสิทธิ์ใด ๆ โทเค็นอาจถูกสร้างขึ้นได้ทุกที่ดังนั้น API ของคุณจึงสามารถเรียกได้จากทุกที่ด้วยวิธีเดียวในการตรวจสอบสิทธิ์การโทรเหล่านั้น
พร้อมสำหรับมือถือ:เมื่อคุณเริ่มทำงานบนแพลตฟอร์มเนทีฟ (iOS, Android, Windows 8, ฯลฯ ) คุกกี้ไม่เหมาะเมื่อใช้วิธีที่ใช้โทเค็นทำให้สิ่งนี้ง่ายขึ้นมาก
CSRF:เนื่องจากคุณไม่ได้พึ่งพาคุกกี้คุณจึงไม่จำเป็นต้องป้องกันคำขอข้ามไซต์ (เช่นไม่สามารถทำเว็บไซต์ของคุณสร้างคำขอ POST และใช้คุกกี้การตรวจสอบสิทธิ์ที่มีอยู่แล้วซ้ำอีกครั้งเพราะจะไม่มี )
ประสิทธิภาพ:เราไม่ได้นำเสนอเกณฑ์มาตรฐานฮาร์ดไดรฟ์ใด ๆ ที่นี่ แต่เครือข่ายไปกลับ (เช่นการค้นหาเซสชั่นในฐานข้อมูล) น่าจะใช้เวลามากกว่าการคำนวณ HMACSHA256 เพื่อตรวจสอบโทเค็นและวิเคราะห์เนื้อหา
A token
คือชิ้นส่วนของข้อมูลที่Server X
อาจสร้างได้และมีข้อมูลเพียงพอที่จะระบุผู้ใช้เฉพาะ
คุณอาจจะนำเสนอข้อมูลการเข้าสู่ระบบของคุณและถามServer X
หาtoken
; จากนั้นคุณอาจนำเสนอtoken
และขอServer X
ให้ดำเนินการเฉพาะสำหรับผู้ใช้
Token
s ถูกสร้างขึ้นโดยใช้การผสมผสานของเทคนิคต่าง ๆ จากการเข้ารหัสเช่นเดียวกับการป้อนข้อมูลจากทุ่งกว้างของการวิจัยความปลอดภัย หากคุณตัดสินใจที่จะไปและสร้างtoken
ระบบของคุณเองคุณจะต้องฉลาดจริง ๆ
โทเค็นคือชิ้นส่วนของข้อมูลที่สร้างโดยเซิร์ฟเวอร์และมีข้อมูลเพื่อระบุความถูกต้องของผู้ใช้และโทเค็น โทเค็นจะมีข้อมูลของผู้ใช้รวมถึงรหัสโทเค็นพิเศษที่ผู้ใช้สามารถส่งไปยังเซิร์ฟเวอร์ได้ทุกวิธีที่รองรับการตรวจสอบสิทธิ์แทนที่จะส่งชื่อผู้ใช้และรหัสผ่านโดยตรง
การพิสูจน์ตัวตนแบบใช้โทเค็นเป็นเทคนิคความปลอดภัยที่รับรองความถูกต้องของผู้ใช้ที่พยายามเข้าสู่ระบบเซิร์ฟเวอร์เครือข่ายหรือระบบความปลอดภัยอื่น ๆ โดยใช้โทเค็นความปลอดภัยที่จัดหาโดยเซิร์ฟเวอร์
การพิสูจน์ตัวตนสำเร็จถ้าผู้ใช้สามารถพิสูจน์ไปยังเซิร์ฟเวอร์ที่เขาหรือเธอเป็นผู้ใช้ที่ถูกต้องโดยผ่านโทเค็นความปลอดภัย บริการตรวจสอบโทเค็นความปลอดภัยและประมวลผลคำขอของผู้ใช้
หลังจากที่โทเค็นได้รับการตรวจสอบความถูกต้องโดยบริการจะถูกใช้เพื่อสร้างบริบทความปลอดภัยสำหรับลูกค้าดังนั้นบริการสามารถตัดสินใจอนุญาตหรือกิจกรรมตรวจสอบสำหรับคำขอของผู้ใช้ที่ต่อเนื่อง
ตามโทเค็น (ความปลอดภัย / การรับรองความถูกต้อง)
หมายความว่าเพื่อให้เราพิสูจน์ได้ว่าเราเข้าถึงก่อนอื่นเราต้องได้รับโทเค็น ในสถานการณ์ชีวิตจริงโทเค็นอาจเป็นการ์ดเข้าถึงอาคารมันอาจเป็นกุญแจสำคัญในการล็อคบ้านของคุณ เพื่อให้คุณได้รับคีย์การ์ดสำหรับสำนักงานหรือกุญแจไปที่บ้านของคุณคุณต้องพิสูจน์ว่าคุณคือใครและในความเป็นจริงคุณสามารถเข้าถึงโทเค็นนั้นได้ อาจเป็นเรื่องง่ายเหมือนการแสดง ID ของคุณใครบางคนหรือให้รหัสลับแก่พวกเขา ลองจินตนาการว่าฉันต้องเข้าถึงสำนักงานของฉัน ฉันลงไปที่สำนักงานรักษาความปลอดภัยฉันแสดง ID ของพวกเขาและพวกเขามอบโทเค็นนี้ให้ฉันซึ่งทำให้ฉันเข้าไปในอาคาร ตอนนี้ฉันสามารถเข้าถึงสิ่งที่ฉันต้องการภายในอาคารได้ไม่ จำกัด ตราบเท่าที่ฉันมีโทเค็นของฉัน
ประโยชน์ของการรักษาความปลอดภัยด้วยโทเค็นคืออะไร
หากเรานึกย้อนกลับไปใน API ที่ไม่ปลอดภัยสิ่งที่เราต้องทำในกรณีนี้คือเราต้องให้รหัสผ่านสำหรับทุกสิ่งที่เราต้องการจะทำ
จินตนาการทุกครั้งที่เราเข้าประตูในสำนักงานของเราเราต้องให้ทุกคนนั่งถัดจากประตูรหัสผ่านของเรา ตอนนี้จะไม่ดีสวยเพราะนั่นหมายความว่าทุกคนในสำนักงานของเราสามารถใช้รหัสผ่านของเราและปลอมตัวเราและที่ไม่ดี สิ่งที่เราทำคือการดึงโทเค็นแน่นอนพร้อมด้วยรหัสผ่าน แต่เราเรียกคืนจากบุคคลหนึ่ง จากนั้นเราสามารถใช้โทเค็นนี้ทุกที่ที่เราต้องการภายในอาคาร แน่นอนถ้าเราสูญเสียโทเค็นเรามีปัญหาเช่นเดียวกับคนอื่นรู้รหัสผ่านของเรา แต่นั่นทำให้เราเป็นอย่างที่เรามั่นใจได้ว่าถ้าเราสูญเสียโทเค็นเราสามารถยกเลิกการเข้าถึงและโทเค็นอาจ ไม่ควรอยู่นานเกิน 24 ชั่วโมงดังนั้นในวันถัดไปที่เรามาที่สำนักงานเราต้องแสดง ID ของเราอีกครั้ง แต่ยังมีเพียงคนเดียวที่เราแสดง ID ให้
คำถามนั้นเก่าและเทคโนโลยีก้าวหน้าไปแล้วนี่คือสถานะปัจจุบัน:
JSON Web Token (JWT) เป็นมาตรฐานแบบเปิดที่ใช้ JSON (RFC 7519) สำหรับการส่งผ่านการอ้างสิทธิ์ระหว่างฝ่ายต่างๆในสภาพแวดล้อมของเว็บแอปพลิเคชัน โทเค็นได้รับการออกแบบให้มีขนาดกะทัดรัดปลอดภัยต่อ URL และใช้งานได้โดยเฉพาะอย่างยิ่งในบริบทการลงชื่อเข้าใช้ครั้งเดียว (SSO) ของเว็บเบราว์เซอร์
มันเป็นแค่แฮชที่เชื่อมโยงกับผู้ใช้ในฐานข้อมูลหรือวิธีอื่น โทเค็นนั้นสามารถใช้เพื่อรับรองความถูกต้องแล้วให้สิทธิ์ผู้ใช้ในการเข้าถึงเนื้อหาที่เกี่ยวข้องของแอปพลิเคชัน เพื่อดึงโทเค็นนี้ในการเข้าสู่ระบบฝั่งไคลเอ็นต์จำเป็นต้องมี หลังจากเข้าสู่ระบบครั้งแรกคุณต้องบันทึกโทเค็นที่ดึงข้อมูลไม่ใช่ข้อมูลอื่น ๆ เช่นเซสชัน, รหัสเซสชันเพราะที่นี่ทุกอย่างเป็นโทเค็นเพื่อเข้าถึงทรัพยากรอื่น ๆ ของแอปพลิเคชัน
Token ใช้เพื่อรับรองความถูกต้องของผู้ใช้
วิธีที่ต้องการมากที่สุดในปัจจุบันเพื่อรักษาความปลอดภัยทรัพยากร Web API คือการตรวจสอบผู้ใช้ในเซิร์ฟเวอร์ Web API โดยใช้โทเค็นที่ลงชื่อ (ซึ่งมีข้อมูลเพียงพอที่จะระบุผู้ใช้เฉพาะ) ซึ่งต้องส่งไปยังเซิร์ฟเวอร์โดยไคลเอนต์ ทุกคำขอ สิ่งนี้เรียกว่าการรับรองความถูกต้องโดยใช้ Token
การรับรองความถูกต้องโดยใช้โทเค็นทำงานดังนี้:
ผู้ใช้ป้อนชื่อและรหัสผ่านลงในไคลเอนต์ (ไคลเอนต์หมายถึงเบราว์เซอร์หรืออุปกรณ์มือถือ ฯลฯ )
จากนั้นไคลเอ็นต์จะส่งข้อมูลประจำตัวเหล่านี้ (เช่นชื่อผู้ใช้และรหัสผ่าน) ไปยังเซิร์ฟเวอร์การอนุญาต
จากนั้นเซิร์ฟเวอร์การอนุญาตจะตรวจสอบความถูกต้องของข้อมูลประจำตัวลูกค้า (เช่นชื่อผู้ใช้และรหัสผ่าน) จากนั้นจะสร้างและส่งคืนโทเค็นการเข้าถึง โทเค็นการเข้าถึงนี้มีข้อมูลเพียงพอที่จะระบุผู้ใช้และยังมีเวลาโทเค็นหมดอายุ
แอปพลิเคชันไคลเอนต์จะรวมโทเค็นการเข้าถึงในส่วนหัวการอนุญาตของคำขอ HTTP เพื่อเข้าถึงทรัพยากรที่ถูก จำกัด จากเซิร์ฟเวอร์ทรัพยากรจนกว่าโทเค็นจะหมดอายุ
บทความต่อไปนี้แสดงวิธีใช้การรับรองความถูกต้องโดยใช้ Token ใน WEB API ทีละขั้นตอน
https://dotnettutorials.net/lesson/token-based-authentication-web-api/
เมื่อคุณลงทะเบียนสำหรับเว็บไซต์ใหม่บ่อยครั้งคุณจะได้รับอีเมลเพื่อเปิดใช้งานบัญชีของคุณ โดยทั่วไปแล้วอีเมลนั้นจะมีลิงค์สำหรับคลิก ส่วนหนึ่งของลิงค์นั้นมีโทเค็นเซิร์ฟเวอร์รู้เกี่ยวกับโทเค็นนี้และสามารถเชื่อมโยงกับบัญชีของคุณ โทเค็นมักจะมีวันหมดอายุที่เกี่ยวข้องดังนั้นคุณอาจมีเวลาเพียงหนึ่งชั่วโมงในการคลิกที่ลิงก์และเปิดใช้งานบัญชีของคุณ สิ่งนี้จะไม่เกิดขึ้นกับคุกกี้หรือตัวแปรเซสชันเนื่องจากไม่ทราบว่าอุปกรณ์หรือเบราว์เซอร์ใดที่ลูกค้าใช้เพื่อตรวจสอบอีเมล