วิธีการเต้นรำ OAuth: บทเรียนทีละขั้นตอน

ห้าหกเจ็ดแปด!

ส่วนใหญ่ฉันพยายามที่จะเรียนรู้สิ่งใหม่ ๆ และนำไปใช้ในทางปฏิบัติฉันเริ่มรู้สึกได้อย่างรวดเร็วว่าฉันหลงทางในท่าเต้นมากมาย ฉันพยายามอย่างยิ่งที่จะหาวิธีที่เหมาะสมในการทำสิ่งต่าง ๆ ในขณะที่ไม่เข้าใจว่าเกิดอะไรขึ้นหรือฉันลงเอยผิดด้านของห้อง ...

ลองทำสิ่งต่างๆจนกว่าจะมีอะไรทำงานได้

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

ดังนั้นในครั้งนี้ฉันตัดสินใจหยุดคิดและทำมันด้วยตัวเองโดยใช้สิ่งสุดท้ายที่ฉันเรียนรู้

และนั่นก็คือ OAuth 2.0

OAuth คืออะไร

มาเริ่มด้วยพื้นฐาน: OAuth ย่อมาจาก Open Authorization เป็นกระบวนการที่แอปพลิเคชันหรือเว็บไซต์สามารถเข้าถึงข้อมูลผู้ใช้ส่วนตัวจากเว็บไซต์อื่น

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

คุณได้ใช้สิ่งนี้อย่างน้อยหนึ่งพันล้านครั้งในความเป็นจริงคุณใช้มันทุกครั้งที่คุณคลิกที่“ เข้าสู่ระบบด้วย Facebook / Google / GitHub / …” จากนั้นคุณจะเห็นหน้าจอแสดงความยินยอมซึ่งแสดงข้อมูลจากโปรไฟล์ Facebook ของคุณที่คุณอนุญาตให้ that-hot-new-app.com อ่าน (และบางครั้งเขียน) หลังจากนั้นเนื่องจาก that-hot-new-app.com เชื่อถือตัวตนที่ระบุโดย Facebook พวกเขาสามารถสร้างโปรไฟล์สำหรับคุณในฐานข้อมูลโดยใช้ข้อมูลที่พวกเขาได้รับ

การสื่อสารระหว่าง that-hot-new-app.com และ Facebook มักจะสิ้นสุดที่นี่ นี่คือเหตุผลที่รูปโปรไฟล์ของคุณจะไม่เปลี่ยนแปลงไปทั่วอินเทอร์เน็ตหากคุณเปลี่ยนบน Facebook พวกเขาไม่เคยกลับไปที่ Facebook และขอข้อมูลอัปเดต

เมื่อจังหวะระนาดเริ่มเล่น ...

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

ตัวอย่างที่ดีของเรื่องนี้คือ Relive บริการที่เชื่อมต่อกับแอพติดตามกีฬาต่าง ๆ เพื่อสร้างวิดีโอ Earth view ของการวิ่งหรือขี่ของคุณ ทุกครั้งที่คุณทำกิจกรรมเสร็จแล้ว Relive จะแจ้งให้คุณสร้างวิดีโอจากมัน หากคุณตอบว่าใช่พวกเขาจะดำเนินการและแจ้งให้คุณทราบเมื่อพร้อมที่จะสื่อสังคมออนไลน์โม้ ... ฉันหมายถึงการแบ่งปัน

ไม่มีความแตกต่างทางเทคนิคระหว่างประเพณีสองอย่างนี้ นั่นเป็นสาเหตุที่คุณควรระมัดระวังเกี่ยวกับตำแหน่งที่คุณลงชื่อเข้าใช้ด้วยโซเชียลมีเดียหรือบัญชี Google / Gmail

มันอาจฟังดูน่ากลัว แต่ไม่มีอะไรน่ากลัวจริงๆ เพียงจำไว้ว่าคุณอนุญาตให้ใช้งาน - hot-new-app.com เพื่อเข้าถึงข้อมูลเกี่ยวกับคุณที่มีรายละเอียดในหน้าจอแสดงความยินยอมซึ่งอาจเกิดขึ้นซ้ำ ๆ ตระหนักถึงการอนุญาตที่คุณให้และตรวจสอบให้แน่ใจว่าคุณรู้วิธีปิดการใช้งานเมื่อใดก็ตามที่คุณไม่ไว้วางใจอีกต่อไป

ตัวอย่างเช่นหากคุณใช้บัญชี Google ในการเข้าถึง that-hot-new-app.com แต่ไม่ต้องการอนุญาตอีกต่อไปเพียงไปที่การตั้งค่าบัญชี Google ของคุณและปิดการเข้าถึง

ผู้ให้บริการเอกลักษณ์หลักทั้งหมดให้การควบคุมนี้

เอาล่ะ แต่คุณจะเต้น OAuth ได้อย่างไร?

ก่อนที่คุณจะลงจอดบนนั้น - new-app.com และแม้แต่คลิกที่“ เข้าสู่ระบบด้วย YourFavoriteIdentityProvider” ผู้ที่อาจเป็นนักพัฒนาต้องสร้างแอปพลิเคชันบนเว็บไซต์ของผู้ให้บริการ

นี่คือวิธีการลงทะเบียน that-hot-new-app.com เพื่อให้ในภายหลังผู้ให้บริการรู้ว่าใครกำลังขอข้อมูลส่วนตัว

ในขั้นตอนนี้ผู้พัฒนาจะตั้งค่าข้อมูลบางอย่างเกี่ยวกับแอปพลิเคชันเช่นชื่อแอปหรือเว็บไซต์และที่สำคัญที่สุดคือ URI การเปลี่ยนเส้นทาง ผู้ให้บริการ (เช่น Google หรือ Facebook) จะใช้สิ่งนี้เพื่อติดต่อแอพที่ขอและบอกพวกเขาว่าผู้ใช้ตอบว่าใช่

ฉันสัญญาว่าคุณจะไม่ต้องเขียนมันด้วยมือเราภูมิใจในความไร้กระดาษของเรา

เมื่อแอพได้ลงทะเบียนแล้วผู้ให้บริการจะให้ client-d และ com- ลูกค้าใหม่และ clientSecret ซึ่งจะใช้ในการสื่อสารระหว่างพวกเขา พวกมันทำงานเหมือนชื่อผู้ใช้และรหัสผ่านสำหรับแอปพลิเคชัน

คุณจะได้รับ clientID และ clientSecret ทันทีหลังจากคุณคลิกที่แอปพลิเคชันบันทึก

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

เราไม่ต้องการสิ่งนั้น

มือในการ waists หรือไหล่

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

"กลุ่ม" เหล่านี้เรียกว่าขอบเขตและพวกเขากำหนดสิทธิ์การเข้าถึงโดยปกติจะแยกในหมวดหมู่อ่าน / เขียน ตัวอย่างเช่น that-hot-new-app.com สามารถขอขอบเขต“ โปรไฟล์: อ่าน” และ“ ผู้ติดต่อ: อ่าน” ซึ่งหมายความว่าพวกเขาสามารถอ่านสิ่งที่ผู้ให้บริการกำหนดให้กับกลุ่ม "โปรไฟล์" และ "ผู้ติดต่อ" สิ่งอื่น ๆ จะไม่สามารถเข้าถึงได้เช่นโพสต์หรือเนื้อหาที่คุณชอบ

เอาล่ะเพื่อให้ง่ายขึ้นตอนนี้สมมติว่า that-hot-new-app.com เป็นเว็บไซต์ที่ทำงานร่วมกับ Typeform ซึ่งเป็นบริการสำหรับการสร้างรูปแบบที่สวยงามและชาญฉลาดและ บริษัท ที่ฉันทำงานด้วย คุณต้องการสิ่งที่ร้อนแรงที่สุดในตอนนี้และรวดเร็วดังนั้นในเว็บไซต์ของพวกเขาคุณคลิกที่ "เข้าสู่ระบบด้วย Typeform" เพื่อดำเนินการได้ทันที อะไรต่อไป?

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

โน้ตสีสันนำความสุขมาสู่หัวใจของฉัน

อนุญาต: ขั้นตอนแรกในการเต้นรำ OAuth

ดังนั้นคุณจะใช้ความคิดริเริ่มและคลิกที่ "เชื่อมต่อกับ Typeform" ที่นี่ that-hot-new-app.com (THNA นับจากนี้เป็นต้นไปเพราะฉันเบื่อการเขียนคำที่คั่นด้วยเครื่องหมายขีดกลาง) จะส่งคุณไปยังปลายทางที่อนุญาตของ Typeform (/ oauth / อนุญาต) และจัดเตรียม:

  • รหัสลูกค้า (โปรดจำไว้ว่าชื่อผู้ใช้ของ THNA)
  • ขอบเขตที่ต้องการ (หรือสิทธิ์การเข้าถึง)
  • และ URI การเปลี่ยนเส้นทางของพวกเขาอีกครั้ง (Typeform รู้แล้วเมื่อเราตั้งค่าทุกสิ่ง แต่เราส่งอีกครั้งเพื่อเพิ่มความปลอดภัยอีกชั้น)

URL นั้นจะมีลักษณะดังนี้:

https://api.typeform.com/oauth/authorize?client_id=yourClientId&scope=accounts:read+forms:read+results:read

Typeform จะใช้ข้อมูลนี้เพื่อสร้างหน้าจอแสดงความยินยอมซึ่งคุณสามารถตรวจสอบประเภทของสิ่งที่คุณอนุญาตให้ THNA เห็นและทำ

เมื่อคุณอ่านสิ่งที่คุณยินยอมอย่างถี่ถ้วนแล้วและคลิกที่ "อนุญาต" อย่างมีความสุข Typeform จะส่งคุณไปยัง URI การเปลี่ยนเส้นทางด้วยชั่วคราวเช่น:

https://that-hot-new-app.com/auth/redirect?code=xxxXXXxxxXXXxxx

Token: ใช้เวลา 2 ถึง tangOAuth

ทั้งหมดนี้ไปมารู้สึกเหมือนมีคนพาคุณไปเล่นแทงโก้ใช่ไหม?

ขั้นตอนที่สองของการเต้นรำ OAuth คือเมื่อ THNA ได้รับรหัสนั้นและแลกเปลี่ยนเป็น OAuth Token

ดังนั้น THNA จะใช้รหัสนั้นและส่งกลับไปที่ Typeform อีกครั้งพร้อมกับการเปลี่ยนเส้นทาง URI (ใช่อีกครั้ง!) และความลับของลูกค้า (นั่นคือรหัสผ่านของแอป!)

THNA จะได้รับ OAuth Token TH ซึ่งสามารถใช้เพื่อโต้ตอบกับ Typeform ในนามของผู้ใช้นั่นคือ…คุณ!

อยู่กับฉันแกว่งไปมากับฉัน

นับจากนี้ไปในทุกคำร้องขอที่ THNA ทำกับ Typeform ในนามของคุณพวกเขาจะต้องรวมส่วนหัวการอนุญาตกับโทเค็นการเข้าถึงนั้น ด้วยมัน Typeform (หรือผู้ให้บริการอื่น ๆ ) สามารถระบุ:

  • ใครกำลังขอข้อมูล (ในกรณีนี้ THNA)
  • ใครคือข้อมูลเกี่ยวกับ (คุณ!)
  • และตรวจสอบให้แน่ใจว่าพวกเขามีสิทธิ์ที่ถูกต้องในการเข้าถึงข้อมูลนั้น (เฉพาะสิ่งที่คุณยินยอม)

พร้อมสำหรับฟลอร์เต้นรำ

ดังนั้นตอนนี้คุณรู้ทุกขั้นตอนและการหมุนของเทคนิคการเต้น OAuth คุณควรพร้อมที่จะสร้างท่าเต้นของคุณเองฉันหมายถึงการผสมผสานและทำให้อินเทอร์เน็ตกลายเป็นสถานที่ที่ยิ่งใหญ่กว่าเดิม

วาดโดยคุณอย่างแท้จริง, ปกรูปภาพโดย Gez Xavier Mansfield บน Unsplash