OAuth Connect คืออะไรและใช้งานอย่างไร
พวกเราหลายคนเข้ามาติดต่อกับ OAuth เมื่อท่องเว็บและส่วนใหญ่เราไม่ได้ตระหนักถึงการมีอยู่ของมัน OAuth (Open Authentication) เป็นระบบที่ให้สิทธิ์แก่เว็บไซต์ของบุคคลที่สามในการเข้าถึงบัญชีผู้ใช้เช่นบัญชี Twitter หรือ Facebook ของคุณ ช่วยให้ผู้เข้าชมมีปฏิสัมพันธ์ภายในไซต์โดยไม่ต้องลงทะเบียนบัญชีใหม่หรือปล่อยชื่อผู้ใช้และรหัสผ่านของคุณไปยังบุคคลที่สาม.
ในคู่มือนี้ฉันต้องการแนะนำแนวคิดของ OAuth และวิธีนำไปใช้กับผู้พัฒนาได้อย่างไร มีรายละเอียดทางเทคนิคมากมายที่เกี่ยวข้องในการใช้งานแอปพลิเคชัน OAuth ของคุณเอง ตัวอย่างของฉันจะถูกเขียนใน PHP โดยใช้ตัวห่อห้องสมุดของ Twitter แต่คุณสามารถใช้ API การเขียนโปรแกรมยอดนิยมจาก Python ถึง Ruby หรือ Objective-C.
แม้ว่าแนวคิดจะเป็นความลับ แต่พยายามแยกแยะให้มากที่สุด มันยังคงเป็นเทคโนโลยีที่ลึกลับมากเพิ่งถูกร่างขึ้นในปี 2550 แน่นอนว่าฉันไม่เข้าใจวิธีการเชื่อมต่อ OAuth เต็มรูปแบบแม้หลังจากที่ฉันได้ทำแบบฝึกหัดแรกไปเล็กน้อย ตอนนี้ก่อนที่จะเตะออกสิ่งเล็ก ๆ แนะนำ!
เราสามารถแก้ไขปัญหาอะไรได้บ้าง?
หากคุณพิจารณาว่ามีการเชื่อมต่ออินเทอร์เน็ตมากขึ้นเพียงใดผู้ใช้จะต้องการแบ่งปันข้อมูลระหว่างบัญชีหลายบัญชีจาก Facebook ไปยัง Twitter, Tumblr, Foursquare และตอนนี้แม้แต่ในแอปมือถือเช่น Path หรือ Instagram ปัญหาที่เราเผชิญอยู่ในขณะนี้คือวิธีการทำให้สำเร็จในวิธีที่ปลอดภัยที่สุดและง่ายที่สุดเท่าที่จะเป็นไปได้ OAuth 1.0 เป็นความพยายามในการแก้ปัญหานี้และปัญหาอื่น ๆ อีกมากมายเปรียบเทียบกับมาตรฐาน OpenID ที่เก่ากว่า ผู้ใช้ยังคงป้อนชื่อผู้ใช้ / รหัสผ่านในเว็บไซต์บุคคลที่สามอื่น ๆ เพียงเพื่อเชื่อมต่อกับ OpenID สิ่งนี้ไม่ได้ทำให้ปลอดภัยสำหรับผู้ใช้ ภายใต้ข้อกำหนดของ OAuth ผู้ใช้ไม่จำเป็นต้องเก็บข้อมูลบัญชีส่วนตัวลงในฐานข้อมูลบุคคลที่สาม.
(ที่มาของภาพ: Martin Hassman)
ด้วย OAuth ผู้ให้บริการบัญชีหลัก (เช่น Twitter, Facebook) จะเปลี่ยนเส้นทางคุณ (ผู้ใช้) ไปยังหน้าการให้สิทธิ์ก่อน จากนั้นผู้ใช้ล็อกอินเข้าสู่เครือข่ายหลักจากนั้นยอมรับหรือปฏิเสธการเชื่อมต่อใหม่เข้าสู่เว็บไซต์บุคคลที่สาม เทคโนโลยีเป็นเรื่องง่ายอย่างไม่ลำบากและคุณสามารถอนุญาตการเชื่อมต่อจากการตั้งค่าบัญชีของคุณได้ทุกเมื่อ โปรดสังเกตว่ารหัสผ่านของคุณจะไม่ถูกส่งให้กับบุคคลที่สามซึ่งทำให้โปรโตคอลนี้ปลอดภัยกว่าของตนมาก.
กระบวนการทำงานอย่างไร
มี 3 ฝ่ายที่ต้องพิจารณาในการโทร OAuth มาตรฐาน:
- ผู้ให้บริการ - เครือข่ายหลักที่คุณพยายามดึงข้อมูล พวกเขาให้การตอบสนอง API เช่นชื่อผู้ใช้ของคุณรูปโปรไฟล์ URL เว็บไซต์และสิ่งอื่น ๆ.
- ผู้บริโภค - แอปของบุคคลที่สามที่ต้องการรับข้อมูล นี่จะเป็นเว็บไซต์หรือแอพมือถือที่สร้างการร้องขอการเชื่อมต่อเริ่มต้นจากนั้นจัดการข้อมูลที่ส่งคืนหลังจากได้รับอนุญาต.
- ผู้ใช้งาน - คนที่นั่งด้านหลังคอมพิวเตอร์โต้ตอบกับเว็บไซต์ที่เป็นคุณ!
วัตถุประสงค์ของ OAuth ไม่ได้มีไว้สำหรับห้องสมุดเฉพาะสำหรับเว็บไซต์ที่จะใช้ มันตั้งค่าจริง “กฎระเบียบ” สำหรับการสร้าง API โปรโตคอลแบบเปิด ดังนั้นในขณะที่เราทุกคนสามารถได้รับประโยชน์จากเทคโนโลยีนี้ แต่จริงๆแล้วนักพัฒนาที่จะได้รับความสนใจในพื้นที่นี้ หากคุณต้องการข้อมูลเพิ่มเติมลองดู v1.0 ฉบับปรับปรุงที่ออกในเดือนเมษายน 2010.
หันหน้าไปทางความปลอดภัย
ในที่สุดกระบวนการทั้งหมดต้องการ 2 ปุ่มที่แตกต่างกันพร้อมกับโทเค็นการเข้าถึง บริการรูทคีย์จะได้รับหลังจากที่คุณลงทะเบียนแอปพลิเคชันซึ่งเป็นที่รู้จักกันในชื่อของคุณ ลูกค้า และ รหัสลับ. โดยทั่วไปรหัสลูกค้าจะถูกส่งผ่านไปยัง URL การตรวจสอบสิทธิ์เพื่อให้เซิร์ฟเวอร์สามารถจดจำแอปของคุณได้.
รหัสลับถูกเก็บไว้ในรหัสของคุณเพื่อให้เซิร์ฟเวอร์สามารถตรวจสอบข้อมูลประจำตัวของแอปได้ ในทำนองเดียวกันรีโมตเซิร์ฟเวอร์จะจับคู่รหัสลับของคุณกับตัวเองดังนั้นคุณจะไม่ส่งการสั่นด้วยความตื่นเต้นไปที่ API ของ Facebook หรือในทางกลับกัน หากผู้ใช้อนุญาตการเชื่อมต่อและคีย์ทั้งหมดตรงกันผู้ใช้จะถูกส่งกลับไปยังเว็บไซต์ของคุณด้วยรหัสและตัวอักษรแบบยาว.
รหัสนี้ใช้เพื่อสร้างใหม่ โทเค็นการเข้าถึง. พฤติกรรมเหล่านี้คล้ายกับตัวแปรเซสชันซึ่งคุณสามารถเก็บไว้ในคุกกี้เพื่อให้ผู้ใช้ลงชื่อเข้าใช้เว็บไซต์ของคุณ ข้อแตกต่างคือบริการต่าง ๆ จะส่งโทเค็นการเข้าใช้และโทเค็นการเข้าถึงลับกลับ คุณอาจต้องใช้ทั้งสองอย่างเพื่อดึงข้อมูลจากเซิร์ฟเวอร์ ตัวอย่างอาจขอรูปถ่ายโปรไฟล์ของผู้ใช้เพื่อบันทึกสำเนาบนเว็บไซต์ของคุณเอง.
ห้องสมุดตัวอย่างสำหรับ Twitter OAuth
นักพัฒนามักจะไม่เริ่มต้นจากศูนย์ดังนั้นทำไมไม่มองเข้าไปในห้องสมุดที่สร้างไว้ก่อนหน้า? สิ่งนี้จะช่วยเราประหยัดเวลาของเราและจากอาการปวดหัวเมื่อทำงานกับ PHP เรามาดูการสร้างตัวอย่างที่ง่ายมาก ๆ บน Twitter API.
ฉันขอแนะนำ Twitter Async โดย Jaisen Mathai บน GitHub มันทำงานได้อย่างสมบูรณ์และยังให้รหัสตัวอย่างที่ตรงไปตรงมาจริงๆที่เราสามารถดูได้ คุณสามารถดาวน์โหลด. zip ได้ก่อนนี้ แต่ก่อนที่เราจะดูรหัสเราต้องลงทะเบียนและรับรหัสแอพของเราจาก Twitter.
การลงทะเบียนแอปพลิเคชันใหม่
Twitter Dev Center เป็นแหล่งข้อมูลที่ยอดเยี่ยมสำหรับผู้ที่เพิ่งเริ่มต้นใช้งาน API มันถูกเขียนและเขียนซ้ำหลายครั้งในช่วงเวลาไม่กี่ปี หน้าเว็บที่เราต้องการคือ https://dev.twitter.com/apps/new มันจะขอให้คุณเข้าสู่ระบบในตอนแรกจากนั้นคุณต้องป้อนข้อมูลประจำตัวบางอย่างสำหรับแอปพลิเคชันใหม่.
ชื่อและคำอธิบายของแอพจะปรากฏขึ้นเมื่อผู้ใช้ไปที่อนุญาตด้วย Twitter URL เว็บของคุณเป็นสิ่งสำคัญเช่นกันในการแยกแยะที่อยู่บุคคลที่สาม มันจะง่ายกว่าที่จะทำงานกับโดเมนสดแม้ว่าคุณจะสามารถใช้ localhost สำหรับการทดสอบ แต่ฉันไม่สนับสนุนวิธีการนี้ มันง่ายเหมือนการลงทะเบียนสำหรับเว็บโฮสต์ฟรีและเรียกใช้สคริปต์ของคุณจากที่นั่น.
URL การติดต่อกลับถูกระบุว่าเป็นปลายทางสุดท้ายหลังจากผู้เข้าชมยอมรับหรือปฏิเสธการให้สิทธิ์ เป็นหน้าที่ของคุณในฐานะโปรแกรมเมอร์ที่จะอ่านคำตอบจาก Twitter และส่งข้อความตาม ในไลบรารี Async เรามีข้อมูลประจำตัวอยู่แล้ว แต่จะไม่ทำงานเนื่องจากมีการระบุ URL การเรียกกลับไปยังบล็อกภายนอก หากคุณสนใจที่จะสร้างแอป OAuth บนเว็บที่เชื่อมต่ออย่างสมบูรณ์ฉันได้รวมบทแนะนำโดยละเอียดไว้ด้านล่าง.
ตรวจสอบรหัส
หากคุณใช้โฮสต์เว็บระยะไกลคุณอาจต้องการคลายซิปไลบรารี Async และอัปโหลดไปยังไดเรกทอรีใหม่ มิฉะนั้นคุณสามารถตรวจสอบซอร์สโค้ดได้ เป็นไปได้ว่าเราจะไม่สามารถดึงการเชื่อมต่อใหม่ได้ แต่ประสบการณ์ตรงจากการอัพโหลดและแก้ไขซอร์สโค้ดนั้นเป็นกระบวนการเรียนรู้เสมอ.
ในไดเรกทอรีรากคุณจะพบชื่อสคริปต์ simpleTest.php. Inside เป็นรหัส PHP จำนวนมากที่เกี่ยวข้องกับไลบรารี OAuth ที่รวมอยู่ ฉันจะไม่สามารถรวบรวมมันให้คุณได้ แต่เราควรดูบล็อกรหัสที่สำคัญเพื่อระบุรายละเอียดที่น่าสังเกต.
มีตัวแปรที่สำคัญมาก 4 ประการสำหรับรหัสผู้บริโภคและรหัสลับรวมถึงรหัสโทเค็นและรหัสลับ บริการ API ทั้งหมดจะต้องใช้ชุด 4 นี้ แต่เป็นโปรโตคอล OAuth ที่เหมาะสม คลาส EpiTwitter ต้องการค่าทั้งหมด 4 ค่าเป็นพารามิเตอร์และสร้าง URL การเชื่อมต่อลงใน Twitter.
https://api.twitter.com/oauth/authorize?oauth_token=TOKEN_ID_HERE
ด้วย URL ไดนามิกใหม่นี้คุณสามารถสร้างปุ่มเข้าสู่ระบบสำหรับผู้ใช้ของคุณ สิ่งนี้จะนำพวกเขาไปที่หน้า Twitter API ที่ปลอดภัยซึ่งผู้ใช้ยอมรับหรือปฏิเสธการเชื่อมต่อของคุณ ผู้ใช้จะถูกนำไปยัง URL ที่ติดต่อกลับของแอปของคุณโดยไม่คำนึงถึงทางเลือก โพรโทคอลแบบเปิดทั้งหมดมีมุมมองที่สะอาดมากซึ่งช่วยให้สามารถพัฒนาได้อย่างรวดเร็วโดยเฉพาะกับห้องสมุดที่มีอยู่ในทุกภาษา.
ลิ้งค์ที่มีความเกี่ยวข้อง
- คู่มือ hueniverse oauth 1.0
- การแนะนำ OAuth อย่างนุ่มนวล
- คำถามที่พบบ่อยของ OAuth
- คู่มือการพัฒนา Facebook Authentication
- Simple Twitter OAuth Signin
- ใช้ OAuth กับ Twitter ใน Cocoa Objective-C
- การใช้ OAuth อย่างชาญฉลาดใน Rails
ข้อสรุป
หวังว่าการแนะนำ OAuth นี้ช่วยให้คุณมีความสนใจในการสร้างแอปผ่านโปรโตคอล นักพัฒนาหลายคนพยายามอย่างหนักในการแก้ปัญหาดังกล่าวและ OAuth 2.0 อาจเป็นอนาคตของเครือข่ายสังคมที่เชื่อมต่อกัน ฉันใช้การเชื่อมต่อมากกว่าสองโหลเข้ากับบัญชี Twitter ของฉันและได้รับความประทับใจอย่างมากกับเอกสารของนักพัฒนา!
เห็นได้ชัดว่ามีหลายสิ่งที่จะพูดในหัวข้อนี้ ไม่ใช่สิ่งที่คุณสามารถประมวลผลได้อย่างสมบูรณ์ในการนั่งเพียงครั้งเดียว เรียกดูทั่วทั้งเน็ตเพื่อหาวิธีแก้ปัญหาเพิ่มเติมของ OAuth และแจ้งให้เราทราบความคิดเห็นของคุณในพื้นที่อภิปรายด้านล่าง.