מהו חיבור OAuth וכיצד להשתמש בו
רבים מאיתנו באים במגע עם OAuth בעת גלישה ברחבי האינטרנט, ורובנו אפילו לא מודעים לקיומה. OAuth (Open Authentication) היא מערכת המעניקה לאתרי אינטרנט של צד שלישי גישה מוגבלת לחשבונות משתמשים, כגון חשבונות Twitter או Facebook שלך. הוא מאפשר למבקרים לקיים אינטראקציה בתוך האתר ללא צורך ברישום חשבון חדש או שחרור שם המשתמש והסיסמה שלך לצדדים שלישיים.
במדריך זה אני רוצה להציג את הרעיון של OAuth וכיצד הוא יכול לחול על מפתחים. יש הרבה פרטים טכניים המעורבים ביישום OAuth שלך. הדוגמה שלי יהיה כתוב ב- PHP באמצעות מעטפת ספריית טוויטר, אבל אתה יכול להשתמש כמעט כל תכנות API פופולרי מ Python כדי רובי או Objective-C.
גם אם המושג מרגיש חשאי, לנסות לעכל כמה שאתה יכול. זה עדיין טכנולוגיה מסתורית מאוד, לאחר שזה עתה גויס בחזרה בשנת 2007. אני בהחלט לא מבין איך לפתח חיבורי OAuth מלא גם אחרי הדרכות הראשונות שלי אבל אם אתה מקל עם זה, תוכל לתפוס במהירות. עכשיו הראשון לבעוט את הדברים, מבוא קטן!
אילו בעיות ניתן לפתור?
אם אתה מחשיב כמה מחובר יותר לאינטרנט, זה רק הגיוני שמשתמשים ירצו לשתף מידע בין חשבונות מרובים מ- Facebook ל Twitter, Tumblr, Foursquare, ועכשיו אפילו לתוך יישומים ניידים כגון נתיב או Instagram. הבעיה שעומדת בפנינו עכשיו היא איך לעשות זאת בצורה הבטוחה והפשוטה ביותר האפשרית. OAuth 1.0 הוא ניסיון לפתור בעיה זו ובעיות רבות אחרות, בהשוואה לתקני OpenID ישנים יותר. משתמשים עדיין מזינים את שם המשתמש / הסיסמה שלהם לאתרי צד שלישי אחרים רק כדי להתחבר ל- OpenID. זה לא עושה את זה בטוח יותר עבור המשתמש. תחת מפרט OAuth, המשתמש לעולם לא צריך לאחסן נתוני חשבון אישי למסד נתונים של צד שלישי.
(מקור התמונה: מרטין הסמן)
עם OAuth, ספק החשבון הראשי (למשל Twitter, Facebook) יפנה אותך תחילה (המשתמש) לדף הרשאה. לאחר מכן המשתמש מתחבר לרשת הראשית ולאחר מכן מקבל או מכחיש חיבור חדש לאתר האינטרנט של צד שלישי. הטכנולוגיה היא קלה ללא כאב ואתה תמיד יכול לאמת את החיבורים מהגדרות החשבון שלך בכל נקודת זמן. שים לב כי הסיסמה שלך לעולם לא ניתנה צד 3 מה שהופך את הפרוטוקול הזה הרבה יותר בטוח מאשר עמיתו.
איך התהליך עובד
יש 3 צדדים שיש לקחת בחשבון בשיטת OAuth סטנדרטית:
- ספק שירות - הרשת העיקרית שאתה מנסה למשוך נתונים. הן מספקות את תגובת ה- API, כגון שם המשתמש, תמונת הפרופיל, כתובת אתר האינטרנט ודברים אחרים.
- הצרכן - היישום של צד שלישי מחפש לקבל נתונים. זה יהיה אתר או יישום נייד אשר עושה את הבקשה ההתחברות הראשונה, ולאחר מכן גם מטפל את הנתונים לחזור לאחר אישור.
- משתמש - האדם היושב מאחורי המחשב אינטראקציה עם אתרי אינטרנט אשר יהיה לך!
מטרת OAuth אינה לספק ספריה ספציפית עבור אתרי אינטרנט לשימוש. זה בעצם מגדיר את “כללים” לבניית API פתוח של פרוטוקול. אז למרות שאנחנו יכולים ליהנות מכל הטכנולוגיה הזו, זה למעשה מפתחים אשר באמת ימצאו עניין בתחום זה. אם אתה צריך מידע נוסף לבדוק את המהדורה המתוקנת v1.0 שוחרר אפריל 2010.
מול אבטחה
התהליך כולו בסופו של דבר דורש 2 מפתחות שונים יחד עם אסימון גישה. המקשים מסופקים על ידי שירות השורש לאחר רישום יישום - אלה ידועים בשם שלך לקוח ו מזהה סודי. מזהה הלקוח מועבר בדרך כלל לכתובת האימות כדי שהשרת יוכל לזהות את האפליקציה שלך.
מזהה הסוד מוחזק בקוד שלך כדי שהשרת יוכל לאמת את זהות האפליקציה שלך. כמו כן השרת המרוחק יתאים את הסוד שלך עם הזהות שלהם אז אתה לא בטעות לשלוח בקשה לצפצף API של Facebook, או להיפך. אם המשתמש מאשר את החיבור ואת כל המפתחות להתאים, ואז הם מוחזרים לאתר האינטרנט שלך עם קוד ארוך של מספרים אקראיים ומכתבים.
קוד זה משמש ליצירת חדש אסימון גישה. פעולות אלה פועלות בדומה למשתנה הפעלה שניתן לאחסן בקובץ cookie כדי לשמור על כניסת המשתמש לאתר שלך. ההבדל היחיד הוא ששירותים רבים ישלחו בחזרה אסימון גישה ואסימון גישה חשאית. סביר להניח שאתה צריך את שניהם כדי למשוך את כל הנתונים מהשרת. דוגמה לכך יכולה לבקש מתמונת הפרופיל של המשתמש לשמור עותק באתר שלך.
דוגמה ספריית עבור OAuth
מפתחים לא סביר להניח להתחיל מהתחלה אז למה לא להסתכל לתוך ספריה שנבנו בעבר? זה יחסוך לנו את הזמן שלנו, וכאבי ראש, כאשר עובדים עם PHP. בואו נסתכל לתוך בניית דוגמה פשוטה באמת על גבי ה- API של Twitter.
אני ממליץ בחום על טוויטר Async על ידי Jaisen Mathai על GitHub. זה עובד בצורה מושלמת ואפילו מספק כמה קודים פשוטים באמת, כי אנחנו יכולים להסתכל. אתה יכול להוריד את .zip לעת עתה, אבל לפני שנבדוק את הקוד אנחנו צריכים להירשם ולקבל את תעודות הזהות שלנו מ- Twitter.
רישום יישום חדש
מרכז הפיתוח של Twitter הוא משאב מצוין עבור אלו שמתחילים ב- API בלבד. זה נכתב ו rewritten פעמים רבות במשך כמה שנים. הדף שאנחנו רוצים הוא https://dev.twitter.com/apps/new. זה יבקש ממך להיכנס בהתחלה, אז אתה צריך להזין כמה אישורים עבור יישום חדש.
שם היישום ותיאורו מוצגים כאשר המשתמש עובר לאישור באמצעות Twitter. כתובת האתר שלך חשובה גם להבדיל בין הכתובת של צד שלישי. זה יהיה קל יותר לעבוד עם תחום חי למרות שאתה יכול להשתמש localhost לבדיקה, אבל אני לא מעודד את השיטה הזו. זה פשוט כמו להירשם למארח אינטרנט בחינם ולהפעיל את הסקריפטים שלך משם.
כתובת ה- Callback מוצגת כיעד הסופי לאחר שהמבקרים שלך מקבלים או מכחישים את ההרשאה. זה התפקיד שלך בתור מתכנת לקרוא את התגובה מ לצפצף פלט הודעה בהתאם. בספריה Async יש לנו כבר כמה אישורים במקום, אבל הם לא יעבדו מאז כתובת האתר להתקשרות צוין לבלוג חיצוני. אם אתה מעוניין בבניית אפליקציית OAuth מחוברת באופן מלא, כללתי כמה מדריכים מפורטים בהמשך.
בדוק את הקוד
אם אתה משתמש מארח אינטרנט מרוחק ייתכן שתרצה לפתוח את הספריות Async ולהעלות אותם לספרייה חדשה. אחרת אתה יכול פשוט לבדוק את קוד המקור. סביר להניח שלא נוכל למשוך חיבור חדש בכל מקרה. אבל ניסיון מעשי עם העלאה ועריכה של קוד המקור הוא תמיד תהליך למידה.
בספריית השורש תמצא סקריפט בשם SimpleTest.php. בפנים יש הרבה קודי PHP הקשורים לספריות OAuth כלל. אני לא אהיה מסוגל לשים את הכל ביחד בשבילך, אבל אנחנו צריכים להסתכל על בלוק קוד חשוב כדי לציין פרטים בולטים.
ישנם 4 משתנים חשובים מאוד עבור מפתח הצרכן ואת תעודת הזהות הסודית, יחד עם קוד אסימון סוד מזהה. לא כל שירותי ה- API יחייבו קבוצה זו של 4, אך זהו פרוטוקול OAuth תקין. בכיתה EpiTwitter דורש את כל 4 ערכים כפרמטרים ומייצר את כתובת הקישור אל טוויטר.
https://api.twitter.com/oauth/authorize?oauth_token=TOKEN_ID_HERE
באמצעות כתובת אתר דינמית חדשה זו תוכל ליצור לחצן התחברות עבור המשתמשים שלך. פעולה זו תפנה אותם תחילה לדף מאובטח של API API שבו המשתמש מקבל או מכחיש את החיבור שלך. ללא קשר לבחירתם, המשתמש יופנה מחדש לכתובת האתר שלך להתקשרות חזרה לאפליקציה. פרוטוקול פתוח כולו יש נקודת מבט נקייה מאוד המאפשר התפתחות מהירה, במיוחד עם ספריות זמין כמעט בכל שפה.
קישורים קשורים
- מדריך 1.0 hueniverse
- מבוא עדין OAuth
- שאלות נפוצות של OAuth
- פייסבוק אימות מדריך Dev
- פשוט לצפצף OAuth כניסה
- שימוש ב- OAuth עם Twitter ב- Cocoa Objective-C
- צריכת OAuth אינטליגנטי ב Rails
סיכום
יש לקוות כי המבוא לתוך OAuth יש לך עניין בבניית יישומים מעל פרוטוקול. מפתחים רבים כבר חתירה לפתרון כזה, ו OAuth 2.0 עשוי להיות העתיד של רשתות חברתיות מחוברות. אני כבר משתמש מעל שני תריסר קשרים לחשבון Twitter שלי התרשמתי באמת עם התיעוד של היזם!
ברור שיש הרבה מה לומר בנושא זה. זה לא משהו שאתה יכול להיות מסוגל לעבד באופן מלא בישיבה אחת. גלוש ברחבי הרשת לקבלת פתרונות OAuth נוספים והודיע לנו על מחשבותיך באזור הדיון להלן.