สิ่งที่คุณต้องการรู้เกี่ยวกับ OAuth2 และการเข้าสู่ระบบด้วย Facebook
เผยแพร่แล้ว: 2022-03-10ในกรณีที่คุณสงสัยว่า OAuth2 คืออะไร นี่คือโปรโตคอลที่ช่วยให้ทุกคนสามารถเข้าสู่ระบบด้วยบัญชี Facebook ของตนได้ มันขับเคลื่อนปุ่ม "เข้าสู่ระบบด้วย Facebook" ในแอปและบนเว็บไซต์ทุกที่
บทความนี้แสดงให้คุณเห็นว่า “เข้าสู่ระบบด้วย Facebook” ทำงานอย่างไรและอธิบายโปรโตคอลเบื้องหลังทั้งหมด คุณจะได้เรียนรู้ว่าเหตุใดคุณจึงต้องการเข้าสู่ระบบด้วย Facebook, Google, Microsoft หรือบริษัทอื่นๆ ที่สนับสนุน OAuth2
บทความนี้แสดงให้คุณเห็นว่า “เข้าสู่ระบบด้วย Facebook” ทำงานอย่างไรและอธิบายโปรโตคอลเบื้องหลังทั้งหมด คุณจะได้เรียนรู้ว่าเหตุใดคุณจึงต้องการเข้าสู่ระบบด้วย Facebook, Google, Microsoft หรือบริษัทอื่นๆ ที่สนับสนุน OAuth2
เราจะดูตัวอย่างสองตัวอย่าง: เหตุใด Spotify จึงใช้ Facebook เพื่อให้คุณสามารถลงชื่อเข้าใช้แอป Spotify บนมือถือ และเหตุใด Quora จึงใช้ Google และ Facebook เพื่อให้คุณลงชื่อเข้าใช้เว็บไซต์ของตนได้
อ่านเพิ่มเติม เกี่ยวกับ SmashingMag:
- สี่วิธีในการสร้างแอปพลิเคชันมือถือ
- วิธีสร้าง UI ที่ซื่อสัตย์และช่วยให้ผู้ใช้ตัดสินใจได้ดีขึ้น
- ทำให้แอพ Android ของคุณเป็นที่นิยมหลังจากเปิดตัว
- เพลย์ลิสต์ Spotify เพื่อเติมพลังให้กับเซสชันการเข้ารหัสและการออกแบบของคุณ
ก่อน OAuth2
OAuth2 ชนะการต่อสู้มาตรฐานเมื่อไม่กี่ปีที่ผ่านมา เป็นโปรโตคอลการตรวจสอบสิทธิ์เพียงโปรโตคอลเดียวที่ผู้ขายรายใหญ่สนับสนุน Google แนะนำ OAuth2 สำหรับ API ทั้งหมด และ Graph API ของ Facebook รองรับเฉพาะ OAuth2
วิธีที่ดีที่สุดในการทำความเข้าใจ OAuth2 คือการดูว่ามีอะไรเกิดขึ้นก่อนหน้านี้และเหตุใดเราจึงต้องการสิ่งที่แตกต่างออกไป ทุกอย่างเริ่มต้นด้วยการตรวจสอบสิทธิ์ขั้นพื้นฐาน
การตรวจสอบสิทธิ์ขั้นพื้นฐาน
รูปแบบการรับรองความถูกต้องมุ่งเน้นไปที่คำถามสำคัญสองข้อ: คุณเป็นใคร? และคุณสามารถพิสูจน์ได้หรือไม่?
วิธีที่พบบ่อยที่สุดในการถามคำถามสองข้อนี้คือการใช้ชื่อผู้ใช้และรหัสผ่าน ชื่อผู้ใช้ระบุว่าคุณเป็นใคร และรหัสผ่านพิสูจน์ได้
Basic Auth เป็นรูปแบบการรับรองความถูกต้องของเว็บรูปแบบแรก ฟังดูตลก แต่ "การตรวจสอบสิทธิ์ขั้นพื้นฐาน" เป็นชื่อจริงในข้อกำหนดที่เผยแพร่ครั้งแรกในปี 2542
การตรวจสอบสิทธิ์ขั้นพื้นฐานช่วยให้เว็บเซิร์ฟเวอร์ขอข้อมูลประจำตัวเหล่านี้ในลักษณะที่เบราว์เซอร์เข้าใจ เซิร์ฟเวอร์ส่งคืนรหัสตอบกลับ HTTP ที่ 401
(ซึ่งหมายความว่าจำเป็นต้องมีการตรวจสอบสิทธิ์) และเพิ่มส่วนหัวพิเศษให้กับการตอบสนองที่ชื่อ WWW-Authenticate
โดยมีค่าพิเศษเป็น Basic
เมื่อเบราว์เซอร์เห็นรหัสตอบกลับและส่วนหัวนี้ จะแสดงกล่องโต้ตอบการเข้าสู่ระบบแบบป๊อปอัป:
ส่วนที่ยอดเยี่ยมเกี่ยวกับ Basic Auth คือความเรียบง่าย คุณไม่จำเป็นต้องเขียนหน้าจอเข้าสู่ระบบ เบราว์เซอร์จัดการทั้งหมดนั้นและส่งชื่อผู้ใช้และรหัสผ่านไปยังเซิร์ฟเวอร์ นอกจากนี้ยังให้โอกาสเบราว์เซอร์จัดการรหัสผ่านเป็นพิเศษ ไม่ว่าจะโดยการจำรหัสผ่านให้ผู้ใช้ รับรหัสผ่านจากปลั๊กอินของบุคคลที่สาม หรือรับข้อมูลประจำตัวของผู้ใช้จากระบบปฏิบัติการ
ข้อเสียคือคุณไม่สามารถควบคุมรูปลักษณ์ของหน้าจอเข้าสู่ระบบได้ นั่นหมายความว่าคุณไม่สามารถจัดรูปแบบหรือเพิ่มฟังก์ชันใหม่ได้ เช่น "ลืมรหัสผ่านใช่หรือไม่" ลิงค์หรือตัวเลือกในการสร้างบัญชีใหม่ หากคุณต้องการปรับแต่งเพิ่มเติม คุณจะต้องเขียนแบบฟอร์มการเข้าสู่ระบบแบบกำหนดเอง
แบบฟอร์มการเข้าสู่ระบบแบบกำหนดเอง
แบบฟอร์มการเข้าสู่ระบบแบบกำหนดเองให้การควบคุมทั้งหมดที่คุณต้องการ คุณเขียนแบบฟอร์ม HTML และพร้อมท์สำหรับข้อมูลประจำตัว จากนั้นคุณส่งแบบฟอร์มและจัดการการเข้าสู่ระบบในแบบที่คุณต้องการ คุณได้รับการควบคุมทั้งหมด: คุณสามารถจัดรูปแบบ ขอรายละเอียดเพิ่มเติม หรือเพิ่มลิงก์เพิ่มเติม
บางเว็บไซต์ เช่น WordPress ใช้แบบฟอร์มง่ายๆ สำหรับหน้าจอเข้าสู่ระบบ:
LinkedIn ให้ผู้ใช้เข้าสู่ระบบหรือสร้างบัญชีในหน้าเดียวกันโดยไม่ต้องไปที่ส่วนอื่นของเว็บไซต์:
การเข้าสู่ระบบโดยใช้แบบฟอร์มเป็นที่นิยมอย่างมาก แต่มีปัญหาพื้นฐานที่สำคัญ: ผู้ใช้ต้องบอกรหัสผ่านแก่เว็บไซต์
เก็บความลับเป็นความลับ
ในแวดวงความปลอดภัย เราเรียกรหัสผ่านว่าเป็นความลับ เป็นข้อมูลที่มีเพียงคุณเท่านั้นและพิสูจน์ได้ว่าคุณคือคุณ ความลับอาจเป็นมากกว่ารหัสผ่าน เราจะพูดถึงเรื่องนี้มากขึ้นในภายหลัง
เว็บไซต์สามารถใช้มาตรการรักษาความปลอดภัยทั้งหมดในโลกได้ แต่ถ้าผู้ใช้แชร์รหัสผ่าน การรักษาความปลอดภัยนั้นจะหายไป แฮกเกอร์ละเมิดเว็บไซต์ Gawker ในปี 2010 โดยเปิดเผยรหัสผ่านของผู้ใช้จำนวนมาก แม้ว่าจะเป็นปัญหาสำหรับ Gawker แต่ปัญหาไม่ได้หยุดอยู่แค่นั้น คนส่วนใหญ่ใช้รหัสผ่านซ้ำ ดังนั้นแฮ็กเกอร์จึงนำข้อมูลที่รั่วไหลออกจาก Gawker และพยายามลงชื่อเข้าใช้เว็บไซต์ที่สำคัญกว่า เช่น Gmail, Facebook และ eBay ใครก็ตามที่ใช้รหัสผ่าน Gawker สำหรับสิ่งที่สำคัญกว่าสูญเสียมากกว่าข่าวซุบซิบล่าสุดเกี่ยวกับเซ็กซ์เทปของ Hulk Hogan
ตรวจสอบให้แน่ใจว่าผู้ใช้ของคุณไม่ได้ใช้รหัสผ่านซ้ำสำหรับหลายบัญชีคือครึ่งแรกของปัญหา และมันก็เป็นไปไม่ได้ ตราบใดที่ผู้คนต้องสร้างบัญชีที่แตกต่างกันทั่วทั้งอินเทอร์เน็ต พวกเขาจะใช้รหัสผ่านซ้ำ
ปัญหาในช่วงครึ่งหลังคือการจัดเก็บรหัสผ่านอย่างปลอดภัย
เมื่อมีคนลงชื่อเข้าใช้แอปของคุณ คุณจะต้องยืนยันรหัสผ่านของพวกเขา ซึ่งหมายความว่าคุณต้องมีสำเนาเพื่อยืนยันด้วย คุณสามารถจัดเก็บชื่อผู้ใช้และรหัสผ่านทั้งหมดไว้ในฐานข้อมูลที่ใดที่หนึ่ง แต่ตอนนี้คุณเสี่ยงที่จะสูญเสียรหัสผ่านเหล่านั้นหรือถูกแฮ็ก แนวทางปฏิบัติที่ดีที่สุดคือการใช้ฟังก์ชันแฮช เช่น หนึ่งในฟังก์ชัน SHA-2 ฟังก์ชันนี้จะเข้ารหัสข้อมูลในแบบที่คุณไม่สามารถเรียกกลับคืนมาได้ แต่คุณสามารถทำซ้ำการเข้ารหัสได้: “รหัสผ่านของฉัน” จะแฮชไปยังบางสิ่งเช่น bb14292d91c6d0920a5536bb41f3a50f66351b7b9d94c804dfce8a96ca1051f2
ทุกครั้ง
และตอนนี้เราอยู่ในทุ่งหญ้าสูง: ฉันกำลังบอกคุณถึงวิธีการใช้โปรโตคอลการเข้ารหัสลับ ต่อไป ฉันจะต้องอธิบายวิธีใส่เกลือลงในข้อมูลของคุณ และต้องอ่านตำราใดในการโจมตีแบบคนกลาง สิ่งที่คุณต้องทำคือเขียนแอป และตอนนี้คุณต้องเป็นผู้เชี่ยวชาญด้านความปลอดภัย เราต้องถอยกลับ
OAuth2
คุณอาจไม่ใช่ผู้เชี่ยวชาญด้านความปลอดภัย แม้ว่าคุณจะเป็นอย่างนั้น ฉันก็ยังไม่เชื่อใจคุณด้วยรหัสผ่านของฉัน OAuth2 ให้วิธีที่ดีกว่าแก่คุณ
ตัวอย่างเช่น ฉันใช้ Spotify บน iPad ของฉัน ฉันจ่ายเงินให้บริษัท 10 เหรียญต่อเดือนเพื่อฟังเพลง Spotify ให้สิทธิ์ฉันในการเข้าถึงอุปกรณ์สามเครื่องเท่านั้น ดังนั้นฉันจึงต้องใช้รหัสผ่านเพื่อให้แน่ใจว่าไม่มีใครใช้บัญชีของฉัน บัญชี Spotify ของฉันไม่ใช่เรื่องใหญ่ด้านความปลอดภัย การถูกแฮ็กไม่ใช่จุดจบของโลก แต่บริษัทมีบัตรเครดิตของฉัน ดังนั้นฉันจึงต้องการให้แน่ใจว่าฉันปลอดภัย
ฉันแทบไม่เคยเข้าสู่ระบบ Spotify เลย ฉันเลยไม่ต้องการสร้างบัญชีอื่นและต้องจำรหัสผ่านอื่น Spotify ให้ทางเลือกที่ดีกว่าแก่ฉัน:
ฉันสามารถใช้บัญชี Facebook ของฉันเพื่อเข้าสู่ระบบได้ เมื่อฉันแตะปุ่มนั้น Spotify จะส่งฉันไปที่ facebook.com แล้วฉันก็เข้าสู่ระบบที่นั่น นี่อาจดูเหมือนเป็นรายละเอียดเล็กๆ แต่เป็นขั้นตอนที่สำคัญที่สุดของกระบวนการทั้งหมด
โปรแกรมเมอร์ของ Spotify สามารถเขียนแบบฟอร์มการเข้าสู่ระบบด้วยตนเอง แล้วส่งชื่อผู้ใช้และรหัสผ่านของฉันไปที่ Facebook ด้วย back-end API แต่มีเหตุผลใหญ่สองประการที่ฉันไม่ต้องการให้ทำเช่นนั้น:
- ฉันไม่เชื่อถือ Spotify ด้วยรหัสผ่าน Facebook ของฉัน ฉันใช้ Facebook เพื่อติดต่อกับเพื่อนๆ และฉันไม่ต้องการที่จะถูกแฮ็ก ฉันไม่เชื่อว่า Spotify จะจัดการรหัสผ่านอย่างถูกต้อง ฉันไม่เชื่อว่ามันจะหลีกเลี่ยงสิ่งล่อใจให้ทำอะไรตลก ๆ กับมัน บางทีมันอาจจะพยายามเก็บไว้เพื่อให้สามารถใช้งานได้ในภายหลัง อาจมีข้อบกพร่องที่เขียนไปยังไฟล์ที่ใดที่หนึ่งก่อนที่จะส่งไปยัง Facebook เพื่อให้แฮ็กเกอร์สามารถคว้ามันได้ ฉันขอโทษ Spotify; ฉันแค่ไม่ใช่คนประเภทที่ไว้ใจได้
- ฉันไม่ต้องการให้ Spotify ทำทุกอย่าง ฉันต้องการให้ Spotify เล่นเพลง ฉันไม่ต้องการให้โพสต์ไปที่ผนังของเพื่อนๆ เมื่อฉันฟัง Spice Girls ฉันไม่ต้องการให้มันดาวน์โหลดรายชื่อเพื่อนของฉันและบั๊กพวกเขาให้เข้าร่วม Spotify ถ้าฉันให้รหัสผ่าน Facebook กับ Spotify มันสามารถเข้าสู่ระบบในฐานะฉันบน Facebook ได้ มันสามารถทำทุกอย่างที่ฉันสามารถทำได้
นอกจากนี้ยังมีสาเหตุใหญ่สองประการที่ Spotify ไม่ต้องการทำเช่นนั้น:
- Facebook มีตัวเลือกมากมายให้ฉันเข้าสู่ระบบ . ฉันสามารถเข้าสู่ระบบด้วยชื่อผู้ใช้และรหัสผ่านของฉัน หรือฉันสามารถเข้าสู่ระบบด้วยแอพ Facebook ฉันสามารถดึงรหัสผ่านของฉันจาก Facebook หรือขอความช่วยเหลือที่ Spotify ไม่สามารถให้ฉันได้ ถ้าฉันเพิ่งให้รหัสผ่านกับ Spotify ฉันจะไม่ได้รับตัวเลือกเหล่านั้นเลย
- ความลับของฉันอาจไม่ใช่รหัสผ่าน . รหัสผ่านมีความปลอดภัยเพียงพอสำหรับบัญชี Spotify มูลค่า 10 ดอลลาร์ต่อเดือนของฉัน แต่อาจไม่เพียงพอสำหรับธนาคารหรือสิ่งที่สำคัญกว่านั้น มีความลับอีกมากมายที่ฉันสามารถให้ได้ เช่น ฉันอาจมีสมาร์ทการ์ด หรืออาจอาศัยอยู่ในภาพยนตร์ Mission Impossible และใช้เครื่องสแกนม่านตา
ฉันไม่ได้อยู่ในภาพยนตร์ Mission Impossible แต่ในโลกแห่งความเป็นจริง หลายบริษัทใช้การตรวจสอบสิทธิ์แบบสองปัจจัย เช่น รหัสผ่านและอย่างอื่น วิธีที่พบบ่อยที่สุดคือการใช้โทรศัพท์ของคุณ เมื่อคุณต้องการเข้าสู่ระบบ บริษัทจะส่งข้อความพร้อมรหัสพิเศษซึ่งใช้เวลาไม่กี่นาที จากนั้นคุณพิมพ์รหัสหรือใช้แอพเพื่อป้อน
ตอนนี้บริษัทมั่นใจว่าไม่มีใครสามารถเข้าสู่ระบบบัญชีของคุณได้โดยไม่ต้องใช้โทรศัพท์ของคุณ หากมีใครขโมยรหัสผ่านของคุณ พวกเขาก็ยังไม่สามารถเข้าสู่ระบบได้ ตราบใดที่คุณไม่ทำโทรศัพท์หาย ทุกอย่างก็ปลอดภัย
Facebook ไม่ใช่ผู้ให้บริการ OAuth2 เพียงรายเดียว เมื่อฉันเข้าสู่ระบบ Quora ด้วยบัญชี Google ของฉัน Google จะบอกฉันว่า Quora ต้องการทำอะไรและถามว่าไม่เป็นไร:
ฉันอาจยอมให้ Quora ดูที่อยู่อีเมลและข้อมูลโปรไฟล์พื้นฐานของฉันได้ แต่ฉันไม่ต้องการให้ Quora จัดการรายชื่อติดต่อของฉัน OAuth2 แสดงให้ฉันเห็นการเข้าถึงทั้งหมดที่ Quora ต้องการ ทำให้ฉันสามารถเลือกและเลือกสิ่งที่ฉันให้สิทธิ์การเข้าถึงได้
นั่นคือข้อดีของ OAuth2 เรามาดูกันว่ามันทำงานอย่างไร
OAuth2 ทำงานอย่างไร
Facebook, Google และผู้ให้บริการ OAuth2 รายอื่น ๆ ส่วนใหญ่ปฏิบัติต่อไคลเอ็นต์ดั้งเดิมแตกต่างจากเว็บไคลเอ็นต์ ไคลเอ็นต์ดั้งเดิมจะถือว่ามีความปลอดภัยมากกว่า และพวกเขาจะได้รับโทเค็นและรีเฟรชโทเค็นที่สามารถใช้งานได้นานหลายเดือน เว็บไคลเอ็นต์จะได้รับโทเค็นที่สั้นกว่ามาก ซึ่งโดยทั่วไปแล้วจะหมดเวลาเมื่อผู้ใช้ปิดเบราว์เซอร์หรือไม่ได้คลิกบนเว็บไซต์มาระยะหนึ่ง
ในทั้งสองกรณี กระบวนการเข้าสู่ระบบจะเหมือนกัน ความแตกต่างอยู่ที่ความถี่ที่ผู้ใช้ต้องผ่านมัน
การเข้าสู่ระบบ OAuth2 ทำตามขั้นตอนทั่วไปเหล่านี้:
- ผู้ใช้พยายามทำบางสิ่งที่ต้องมีการตรวจสอบสิทธิ์ ซึ่งอาจทำได้ง่ายเพียงแค่เปิดแอปหรือคลิกปุ่ม "เข้าสู่ระบบ"
- แอพหรือเว็บไซต์กำหนดว่าผู้ใช้ยังไม่ได้เข้าสู่ระบบและเริ่มกระบวนการเข้าสู่ระบบ โดยเปิดหน้าเว็บและส่งไปยัง URL พิเศษที่ Facebook, Google หรือเว็บไซต์อื่นๆ ที่ให้บริการ OAuth2 ของคุณ
การเปิดหน้าต่างเบราว์เซอร์ใหม่สำหรับผู้ให้บริการ OAuth2 เป็นขั้นตอนสำคัญ นั่นคือสิ่งที่ทำให้ผู้ให้บริการสามารถแสดงแบบฟอร์มการเข้าสู่ระบบของตนเอง และขอให้ผู้ใช้แต่ละรายทราบข้อมูลการเข้าสู่ระบบที่พวกเขาต้องการ แอพส่วนใหญ่ทำเช่นนี้ด้วยมุมมองเว็บแบบฝัง
นอกจาก URL ล็อกอินของผู้ให้บริการแล้ว คุณต้องส่งพารามิเตอร์ URL บางอย่างที่บอกผู้ให้บริการว่าคุณเป็นใครและต้องการทำอะไร:
-
client_id
สิ่งนี้จะบอกผู้ให้บริการ OAuth2 ว่าแอปของคุณคืออะไร คุณจะต้องลงทะเบียนแอปล่วงหน้าเพื่อรับรหัสลูกค้า -
redirect_uri
สิ่งนี้บอกผู้ให้บริการว่าคุณต้องการไปที่ไหนเมื่อคุณทำเสร็จแล้ว สำหรับเว็บไซต์ ให้กลับไปที่หน้าหลัก แอพเนทีฟสามารถไปที่หน้าที่ปิดมุมมองเว็บ -
response_type
สิ่งนี้บอกผู้ให้บริการว่าคุณต้องการอะไรคืน โดยปกติ ค่านี้เป็นtoken
เพื่อระบุว่าคุณต้องการโทเค็นการเข้าถึง หรือcode
เพื่อระบุว่าคุณต้องการรหัสการเข้าถึง ผู้ให้บริการอาจขยายค่านี้เพื่อให้ข้อมูลประเภทอื่น -
scope
สิ่งนี้จะบอกผู้ให้บริการว่าแอปของคุณต้องการเข้าถึงอะไร นี่คือวิธีที่ Google รู้ว่า Quora กำลังขอสิทธิ์เข้าถึงเพื่อจัดการรายชื่อติดต่อของคุณ ผู้ให้บริการแต่ละรายมีขอบเขตที่แตกต่างกัน
มีฟิลด์เพิ่มเติมที่สามารถเพิ่มความปลอดภัยหรือช่วยในการแคชได้ ผู้ให้บริการบางรายยังสามารถเพิ่มฟิลด์ได้อีก แต่ทั้งสี่นี้เป็นส่วนสำคัญ
เมื่อแอปของคุณเปิดมุมมองเว็บ ผู้ให้บริการจะเข้ามาแทนที่ พวกเขาอาจขอชื่อผู้ใช้และรหัสผ่านง่ายๆ หรืออาจแสดงหลายหน้าจอเพื่อขออะไรก็ได้ตั้งแต่ชื่อครูที่คุณชื่นชอบไปจนถึงนามสกุลเดิมของแม่คุณ ทั้งหมดขึ้นอยู่กับพวกเขา ส่วนสำคัญคือ เมื่อผู้ให้บริการเสร็จสิ้น พวกเขาจะเปลี่ยนเส้นทางกลับมาหาคุณและให้โทเค็นแก่คุณ
มันคือทั้งหมดที่เกี่ยวกับโทเค็น
เมื่อกระบวนการเสร็จสิ้น ผู้ให้บริการจะให้โทเค็นและประเภทโทเค็นแก่คุณ โทเค็นมีสองประเภท: โทเค็นการเข้าถึงและโทเค็นการรีเฟรช ประเภทของลูกค้าที่คุณมีจะเป็นตัวกำหนดประเภทของโทเค็นที่คุณได้รับอนุญาตให้ขอได้
เมื่อฉันลงชื่อเข้าใช้แอป Spotify ฉันสามารถอยู่ในระบบได้เป็นเวลาหลายเดือน เพราะสันนิษฐานว่าฉันใช้โทรศัพท์ของฉันเพียงคนเดียว Facebook ไว้วางใจให้แอพ Spotify จัดการโทเค็น และฉันเชื่อว่าแอพ Spotify จะไม่ทำโทเค็นหาย
เมื่อโทเค็นการเข้าถึงหมดเวลา (โดยทั่วไปในหนึ่งถึงสองชั่วโมง) Spotify สามารถใช้โทเค็นการรีเฟรชเพื่อรับโทเค็นใหม่ได้
โทเค็นการรีเฟรชมีอายุหลายเดือน ด้วยวิธีนี้ ฉันต้องลงชื่อเข้าใช้โทรศัพท์เพียงไม่กี่ครั้งต่อปี ข้อเสียคือถ้าฉันทำโทเค็นการรีเฟรชหาย อาจมีคนอื่นใช้บัญชีของฉันเป็นเวลาหลายเดือน โทเค็นการรีเฟรชมีความสำคัญมากจน iOS จัดเตรียมพวงกุญแจสำหรับโทเค็น ซึ่งจะทำให้แน่ใจว่าได้เข้ารหัสและจัดเก็บไว้อย่างปลอดภัย
การใช้ OAuth2 ในเว็บแอปพลิเคชันทำงานในลักษณะเดียวกัน แทนที่จะใช้มุมมองเว็บ คุณสามารถเปิดคำขอเข้าสู่ระบบ OAuth2 ในเฟรม, iframe หรือหน้าต่างแยกต่างหากได้ คุณยังสามารถเปิดมันบนหน้าปัจจุบันได้ แต่สิ่งนี้จะทำให้คุณสูญเสียสถานะแอปพลิเคชัน JavaScript ทั้งหมดเมื่อใดก็ตามที่มีคนต้องการเข้าสู่ระบบ
เมื่อฉันเข้าสู่ระบบ Quora ด้วยเว็บเบราว์เซอร์ ฉันไม่ได้รับโทเค็นการรีเฟรช พวกเขาต้องการให้โทเค็นหมดเวลาและแจ้งให้ฉันลงชื่อเข้าใช้อีกครั้งเมื่อฉันออกจากเบราว์เซอร์ หรือแม้แต่ออกไปรับประทานอาหารกลางวัน ลูกค้าที่ไม่น่าเชื่อถือไม่สามารถรีเฟรชโทเค็นได้ เนื่องจากไม่สามารถเชื่อถือได้ให้ยึดโทเค็นการรีเฟรชที่สำคัญ ปลอดภัยกว่าแต่สะดวกน้อยกว่า เพราะระบบจะแจ้งให้คุณเข้าสู่ระบบใหม่บ่อยขึ้นมาก
การใช้ OAuth2 ในแอปของคุณ
ตอนนี้คุณรู้แล้วว่า OAuth2 ทำงานอย่างไร แต่คุณอาจไม่ต้องการใช้ไคลเอ็นต์ OAuth2 ของคุณเอง คุณสามารถไปอ่านข้อกำหนด OAuth 2.0 75 หน้าทั้งหมดได้หากคุณมีปัญหาในการนอนหลับ แต่คุณไม่จำเป็นต้องอ่าน มีห้องสมุดดีๆ ให้คุณใช้
iOS มีการรองรับ OAuth2 ในตัว Corrina Krych มีบทช่วยสอนที่เป็นประโยชน์มากเกี่ยวกับการใช้ OAuth 2.0 กับ Swift โดยจะแนะนำวิธีรับโทเค็น วิธีผสานรวมมุมมองในแอปของคุณ และตำแหน่งที่จะจัดเก็บโทเค็นของคุณ
Android ยังรองรับ OAuth2 ในตัวอีกด้วย ฉันต้องยอมรับว่าฉันไม่คุ้นเคยเพราะฉันมุ่งเน้นไปที่ iOS แต่มีบางส่วนที่ดีในเอกสารประกอบเพื่อแสดงตัวอย่างและไลบรารีโอเพนซอร์ซบางส่วนเพื่อให้ง่ายยิ่งขึ้น
JavaScript ไม่มีการสนับสนุนในตัวสำหรับ OAuth2 แต่มีไคลเอ็นต์สำหรับไลบรารี JavaScript หลักทั้งหมด React รองรับ OAuth2 อย่างเต็มที่ AngularJS รองรับ OAuth2.0 ของบุคคลที่สามสำหรับหลายโครงการ ฉันยังเขียนหนึ่งในนั้น
เมื่อคุณมีไคลเอ็นต์ OAuth2 แล้ว คุณจะต้องเลือกผู้ให้บริการ
คุณไว้ใจใคร?
สมมติฐานใหญ่ที่นี่คือ ฉันเชื่อ Facebook มากกว่า Spotify ฉันไม่มีเหตุผลที่ดีสำหรับเรื่องนั้น Facebook ไม่ได้เปิดเผยการรักษาความปลอดภัยภายในสู่สาธารณะ และไม่มีวิธีที่ดีให้ฉันตรวจสอบ Spotify ก็เช่นกัน ไม่มีรายงานผู้บริโภคสำหรับการรักษาความปลอดภัย OAuth2 โดยพื้นฐานแล้วฉันไว้วางใจ Facebook เพราะมันใหญ่กว่า ฉันเชื่อ Facebook เพราะคนอื่นทำ
ฉันยังไว้วางใจ Facebook มากขึ้นทุกครั้งที่คลิกปุ่ม “เข้าสู่ระบบด้วย Facebook” หาก Facebook ลืมรหัสผ่าน แฮกเกอร์จะเข้าถึงได้ไม่เพียงแค่บัญชี Facebook ของฉันเท่านั้น แต่ยังรวมถึงบัญชี Spotify ของฉันและบริการอื่นๆ ที่ฉันลงชื่อเข้าใช้ด้วยบัญชี Facebook ของฉันด้วย ข้อดีคือมีที่เดียวที่ฉันต้องรีเซ็ตรหัสผ่านเพื่อแก้ไขปัญหา
ฉันไม่จำเป็นต้องเชื่อ Facebook แต่ฉันต้องเชื่อใจใครสักคน ต้องมีใครสักคนรับรองฉัน ฉันต้องเลือกผู้ให้บริการที่ฉันไว้วางใจ
การเลือกผู้ให้บริการ OAuth2
Wikipedia รักษารายชื่อผู้ให้บริการ OAuth แต่คุณจะไม่สนใจผู้ให้บริการส่วนใหญ่ รายใหญ่คือ Facebook และ Google คุณอาจต้องการดู Amazon หรือ Microsoft
ทั้งสี่มีขนาดใหญ่และง่ายต่อการรวมเข้าด้วยกัน Facebook ให้คำแนะนำในการลงทะเบียนแอพ Google มีขั้นตอนที่คล้ายกัน แนวคิดพื้นฐานคือคุณสร้างบัญชีนักพัฒนาซอฟต์แวร์แล้วสร้างรหัสแอป ผู้ให้บริการจะให้รหัสลูกค้าแก่คุณซึ่งคุณสามารถใช้ส่งคำขอได้
คุณยังสามารถเลือกผู้ให้บริการได้หลายราย Quora อนุญาตให้คุณเข้าสู่ระบบด้วย Facebook หรือ Google; เนื่องจากทั้งคู่ใช้ OAuth2 คุณอาจใช้รหัสเดียวกันสำหรับทั้งคู่
สิ่งที่ขาดหายไปจาก OAuth2
OAuth2 ทำงานได้ดีมากในการแก้ปัญหาที่ซับซ้อน แต่มีบางสิ่งที่ขาดหายไป:
- มาตรฐานไม่ได้มาตรฐานอย่างสมบูรณ์ ฉันไม่เคยสามารถเขียนไคลเอ็นต์ OAuth2 เดียวที่สามารถเข้าสู่ระบบทั้ง Facebook และ Google ได้โดยไม่ต้องใช้คำสั่ง
if
แต่ละคนตีความข้อกำหนดต่างกัน และมีรายละเอียดที่แตกต่างกันเล็กน้อยสำหรับแต่ละรายการ พวกเขามักจะมีความคิดที่แตกต่างกันเกี่ยวกับขอบเขตที่จะให้ การใช้ไลบรารี่เพื่อผสานรวมกับ OAuth2 ช่วยแก้ปัญหานี้ได้มาก แต่จะไม่มีวันโปร่งใส 100% ในโค้ดของแอปของคุณ - การออกจากระบบเป็นเรื่องยาก . ทุกแอปหรือเว็บไซต์ที่ใช้ OAuth2 มีปุ่มออกจากระบบ แต่ส่วนใหญ่จะลืมโทเค็นโดยไม่ทำให้ใช้งานไม่ได้ แอปจะลืมเกี่ยวกับโทเค็นปัจจุบันทั้งหมดของคุณและอนุญาตให้บุคคลอื่นลงชื่อเข้าใช้ แต่โทเค็นของคุณยังใช้งานได้ หากแฮ็กเกอร์ขโมยโทเค็นของคุณ พวกเขายังคงสามารถใช้โทเค็นนั้นและเข้าสู่ระบบในฐานะคุณได้
มีข้อกำหนดแยกต่างหากสำหรับการทำให้โทเค็น OAuth2 ใช้งานไม่ได้ แต่ผู้ให้บริการหลักหลายรายไม่ได้เลือกโทเค็นนี้ OAuth2 ไม่มีวิธีกู้คืนหากแฮ็กเกอร์ได้รับโทเค็นการรีเฟรชของคุณ แม้ว่าคุณจะสามารถลบสำเนาของโทเค็นในเครื่องได้ แต่แฮ็กเกอร์ก็ยังมีอยู่ ผู้ให้บริการหลายรายให้วิธีระงับบัญชีของคุณ แต่ไม่มีวิธีมาตรฐานในการระงับ
ในการป้องกัน OAuth2 นี่เป็นปัญหาที่ยาก เนื่องจากผู้ให้บริการหลายรายใช้การเข้ารหัสคีย์สาธารณะเพื่อสร้างโทเค็นไร้สัญชาติ ซึ่งหมายความว่าเซิร์ฟเวอร์ไม่จำโทเค็นที่สร้างขึ้น ดังนั้นจึงไม่สามารถลืมได้ในภายหลัง
ปัญหาสำคัญอื่นๆ ของ OAuth2 คือคุณต้องพึ่งพาผู้ให้บริการของคุณ เมื่อ Facebook ล่ม ปุ่ม "เข้าสู่ระบบด้วย Facebook" ในแอปของคุณก็เช่นกัน หาก Google ตัดสินใจที่จะเริ่มเรียกเก็บเงินจากคุณเพื่อสนับสนุน OAuth2 หรือต้องการให้คุณแบ่งผลกำไรด้วย คุณก็ทำอะไรไม่ได้ นี่คือดาบสองคมของการไว้วางใจผู้ให้บริการ: พวกเขากำลังทำอะไรมากมายให้คุณ แต่พวกเขาสามารถควบคุมผู้ใช้ของคุณได้
OAuth2 ขับเคลื่อนโลก
แม้จะมีคุณสมบัติที่ขาดหายไปสองสามอย่างและการพึ่งพาอาศัยกันจำนวนมาก OAuth2 ก็ยังเป็นตัวเลือกที่ยอดเยี่ยม ช่วยให้ผู้ใช้เข้าสู่ระบบแอปของคุณได้ง่าย ไม่ต้องจำรหัสผ่านสำหรับทุกเว็บไซต์ และไว้วางใจในความปลอดภัยของคุณ OAuth2 เป็นตัวเลือกยอดนิยม มันครองอุตสาหกรรม ไม่มีโปรโตคอลความปลอดภัยอื่นใดที่ใกล้เคียงกับการนำ OAuth2 มาใช้
ตอนนี้คุณรู้แล้วว่า OAuth2 มาจากไหนและทำงานอย่างไร ไปตัดสินใจอย่างชาญฉลาดว่าใครควรไว้วางใจ หยุดอ่านบทความเกี่ยวกับการจัดเก็บรหัสผ่านที่เข้ารหัสอย่างปลอดภัย และใช้เวลามากขึ้นในการเขียนแอพที่น่าทึ่งของคุณ