Домашня » Інтернет » Що таке OAuth Connect і як його використовувати

    Що таке OAuth Connect і як його використовувати

    Багато хто з нас вступає в контакт з OAuth під час перегляду веб-сторінок, і більшість з нас навіть не усвідомлює свого існування. OAuth (Open Authentication) - це система, яка надає веб-сайтам третіх сторін обмежений доступ до облікових записів користувачів, наприклад, облікових записів Twitter або Facebook. Вона дозволяє відвідувачам взаємодіяти на сайті, не вимагаючи реєстрації нового облікового запису або випускаючи ім'я користувача та пароль третім особам.

    У цьому посібнику я хотів би представити поняття OAuth та його застосування до розробників. У реалізації вашої власної програми OAuth задіяно багато технічних деталей. Мій приклад буде написаний на PHP за допомогою обгортки бібліотеки Twitter, але ви можете використовувати майже будь-який популярний API для програмування від Python до Ruby або Objective-C.

    Навіть якщо концепція відчуває себе загадковим, спробуйте переварити якомога більше. Це все ще дуже таємнича технологія, тільки що була розроблена ще в 2007 році. Я, звичайно, не зрозумів, як розробити повні OAuth Connections навіть після моїх перших навчальних посібників, але якщо ви дотримуватиметеся цього, ви швидко потрапите. Тепер спочатку виганяйте, невелике введення!

    Які проблеми ми можемо вирішити?

    Якщо ви вважаєте, наскільки більше підключених до Інтернету стало, це має сенс тільки, що користувачі захочуть обмінюватися інформацією між декількома обліковими записами від Facebook у Twitter, Tumblr, Foursquare, а тепер навіть у мобільних додатках, таких як Path або Instagram. Проблема, з якою ми стикаємося зараз, полягає в тому, як це зробити найбезпечнішим і найпростішим способом. OAuth 1.0 - це спроба вирішити цю та багато інших проблем у порівнянні зі старими стандартами OpenID. Користувачі все ще вводять своє ім'я користувача / пароль на інші веб-сайти третіх сторін, щоб підключитися до OpenID. Це не робить його безпечнішим для користувача. У специфікації OAuth користувачеві ніколи не потрібно зберігати будь-які особисті дані облікового запису в базі даних третьої сторони.

    (Джерело зображення: Мартін Хассман)

    За допомогою OAuth основний постачальник облікового запису (наприклад, Twitter, Facebook) спочатку перенаправить вас (користувача) на сторінку авторизації. Потім користувач реєструється в основній мережі, а потім або приймає або відхиляє нове з'єднання на веб-сайті третьої сторони. Технологія безболісно легка, і ви завжди можете неавторизувати з'єднання з налаштувань облікового запису в будь-який момент. Зверніть увагу, що ваш пароль ніколи не надається третьої стороні, що робить цей протокол набагато безпечнішим, ніж його колега.

    Як працює процес

    У стандартному виклику OAuth потрібно розглянути три сторони:

    • Сервіс провайдер - Основна мережа, з якої ви намагаєтеся витягнути дані. Вони надають відповідь API, як-от ваше ім’я користувача, зображення профілю, URL-адресу веб-сайту та інше.
    • Споживач - Додаток третьої сторони шукає отримання даних. Це буде веб-сайт або мобільний додаток, який робить початковий запит на з'єднання, а потім обробляє повернені дані після авторизації.
    • Користувач - Людина, що сидить за комп'ютером, взаємодіючи з веб-сайти, які були б ви!

    Метою OAuth є не створення спеціальної бібліотеки для використання веб-сайтів. Це фактично встановлює “правила” для створення відкритого протоколу API. Таким чином, хоча ми всі можемо скористатися цією технологією, насправді розробники, які дійсно знайдуть інтерес у цій сфері. Якщо вам потрібна додаткова інформація, ознайомтеся з переглянутою версією v1.0, виданою у квітні 2010 року.

    Облицювання безпеки

    Весь процес вимагає 2 різних ключів разом з маркером доступу. Ключі надаються кореневою службою після реєстрації програми - вони відомі як ваші клієнта і секретний ідентифікатор. Ідентифікатор клієнта, як правило, передається в URL-адресу автентифікації, щоб сервер міг розпізнати вашу програму.

    Секретний ідентифікатор зберігається у вашому коді, тому сервер може підтвердити ідентифікацію вашої програми. Так само віддалений сервер буде співпадати з вашим секретним ідентифікатором зі своїми власними, тому ви не помилково відправляєте запит Twitter до API Facebook, або навпаки. Якщо користувач авторизує з'єднання і всі ключі збігаються, то вони повертаються на ваш сайт з довгим кодом випадкових чисел і букв.

    Цей код використовується для створення нового Маркер доступу. Вони ведуть себе подібно до змінної сеансу, яку можна зберегти у файлі cookie, щоб увійти в систему. Єдина відмінність полягає в тому, що багато служб відправлять назад токен доступу та секретний маркер доступу. Ймовірно, вам знадобиться обидва ці дані, щоб витягти будь-які дані з сервера. Прикладом може бути запит фотографії профілю користувача, щоб зберегти копію на вашому веб-сайті.

    Приклад бібліотеки для Twitter OAuth

    Розробники часто не можуть починати з нуля, так чому б не заглянути в раніше побудовану бібліотеку? Це врятує наш час, і від головних болів, при роботі з PHP. Давайте розглянемо створення простого прикладу на верхній частині API Twitter.

    Я настійно рекомендую Twitter Async від Jaisen Mathai на GitHub. Вона прекрасно працює і навіть надає деякі дійсно прості коди, які ми можемо подивитися. Тепер можна завантажити файл .zip, але перед тим, як ми подивимося на код, нам потрібно зареєструватися та отримати ідентифікатори додатків з Twitter.

    Реєстрація нової програми

    Центр розробників Twitter є прекрасним ресурсом для тих, хто тільки починає роботу з API. Він написаний і переписаний багато разів протягом декількох років. Сторінка, яку ми хочемо, це https://dev.twitter.com/apps/new. Він попросить вас спочатку увійти в систему, після чого потрібно ввести деякі облікові дані для нової програми.

    Назва та опис програми відображаються, коли користувач переходить на авторизацію з Twitter. Ваш веб-URL також важливий для розрізнення адреси третьої сторони. Було б простіше працювати з живим доменом, хоча ви можете використовувати localhost для тестування, але я не заохочую цей метод. Це так само легко підписатися на безкоштовний веб-хост і запустити сценарії звідти.

    URL-адреса зворотного виклику вказано як кінцевий пункт призначення після того, як ваші відвідувачі приймуть або відхилять авторизацію. Це ваша робота як програміст, щоб прочитати відповідь від Twitter і вивести відповідне повідомлення. У бібліотеці Async ми вже отримали деякі облікові дані, але вони не будуть працювати, оскільки URL-адреса зворотного виклику вказана для зовнішнього блогу. Якщо ви зацікавлені в створенні повністю підключеного веб-додатка OAuth, то нижче наведено деякі докладні посібники.

    Перевірте код

    Якщо ви використовуєте віддалений веб-хост, ви можете розпакувати бібліотеки Async і завантажити їх у новий каталог. Інакше можна просто перевірити вихідний код. Швидше за все, ми не зможемо витягти новий зв'язок. Але практичний досвід завантаження та редагування вихідного коду завжди є процесом навчання.

    У кореневому каталозі ви знайдете ім'я сценарію simpleTest.php. Всередині є багато кодів 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
    • Простий Twitter OAuth Signin
    • Використання OAuth з Twitter в какао Objective-C
    • Споживання OAuth інтелектуально в Rails

    Висновок

    Сподіваюся, що це вступ до OAuth зацікавив вас у створенні додатків через протокол. Багато розробників прагнуть саме такого рішення, і OAuth 2.0 може бути майбутнім взаємопов'язаних соціальних мереж. Я вже використовую більше двох десятків з'єднань у своєму обліковому записі Twitter, і насправді вражає документація розробника!

    Зрозуміло, що на цю тему можна багато чого сказати. Це не те, що ви зможете повністю обробити за один раз. Переглядайте мережу для отримання додаткових рішень OAuth і повідомте нам свої думки в області обговорення нижче.