Какво е OAuth Connect и как да го използвам
Много от нас влизат в контакт с OAuth при сърфиране в мрежата и повечето от нас дори не са наясно с неговото съществуване. OAuth (Open Authentication) е система, която предоставя на уебсайтовете на трети страни ограничен достъп в потребителските акаунти, например вашите профили в Twitter или Facebook. Тя позволява на посетителите да си взаимодействат в рамките на сайта, без да изискват нова регистрация на акаунт или освобождаване на потребителско име и парола за трети лица.
В това ръководство бих искал да представя концепцията за OAuth и как тя може да се прилага за разработчиците. Има много технически подробности, свързани с изпълнението на вашето собствено OAuth приложение. Моят пример ще бъде написан на PHP, използвайки обвивка на библиотеката в Twitter, но бихте могли да използвате почти всеки популярен API за програмиране от Python до Ruby или Objective-C.
Дори ако понятието се чувства загадъчно, опитайте се да усвоите колкото може повече. Това все още е много загадъчна технология, току-що създадена през 2007 година. Аз определено не разбрах как да развия пълни OAuth връзки дори след първите ми няколко урока, но ако се придържате към нея, ще се хванете бързо. Сега първо да изхвърлим неща, малко въведение!
Какви проблеми можем да решим?
Ако обмислите колко по-голяма връзка е станала интернет, има смисъл само потребителите да искат да споделят информация между няколко профила от Facebook в Twitter, Tumblr, Foursquare и сега дори в мобилни приложения като Path или Instagram. Проблемът, пред който се изправяме сега, е как да постигнем това по най-сигурния и най-простия начин. OAuth 1.0 е опит да се реши този и много други проблеми в сравнение с по-старите стандарти на OpenID. Потребителите все още въвеждат потребителското си име и парола в други уебсайтове на трети страни само за да се свържат с OpenID. Това не го прави по-безопасен за потребителя. При спецификациите на OAuth, потребителят никога не трябва да съхранява данни за лични данни в базата данни на трети страни.
(Източник на изображението: Мартин Хасман)
С OAuth основният доставчик на профил (например Twitter, Facebook) първо ще пренасочи вас (потребителя) към страница за оторизация. След това потребителят влиза в основната мрежа и след това приема или отказва нова връзка в уебсайта на третата страна. Технологията е безболезнено лесна и винаги можете да неутрализирате връзките от настройките на профила си във всеки един момент. Обърнете внимание, че паролата ви никога не се дава на третата страна, което прави този протокол много по-безопасен от неговия колега.
Как работи процесът
Има 3 страни, които трябва да разгледат в стандартно обаждане от OAuth:
- Доставчик на услуги - Основната мрежа, от която се опитвате да изтеглите данни. Те предоставят отговор на приложния програмен интерфейс (API), като потребителско име, снимка на потребителския профил, URL адрес на уебсайт и други неща.
- Консуматор - Приложението на третата страна иска да получава данни. Това ще бъде уебсайтът или мобилното приложение, което прави първоначалната заявка за свързване, а след това обработва данните за връщане след упълномощаване.
- потребител - Човекът, който седи зад компютъра, взаимодейства с уебсайтовете, които биха били вие!
Целта на OAuth не е да предоставя конкретна библиотека за използване на уебсайтовете. Това всъщност създава “правилник” за изграждане на API с отворен протокол. Така че, докато всички можем да се възползваме от тази технология, всъщност разработчиците наистина ще намерят интерес в тази област. Ако се нуждаете от повече информация, прегледайте преработеното издание v1.0, издадено април 2010 г..
Облицовка за сигурност
Целият процес в крайна сметка изисква два различни ключа заедно с маркер за достъп. Ключовете се предоставят от root услугата, след като регистрирате приложение - те са известни като вашите клиент и секретен идентификатор. Идентификационният номер на клиента обикновено се предава в URL адреса за удостоверяване, така че сървърът да може да разпознае приложението ви.
Тайният идентификатор се съхранява в кода ви, за да може сървърът да потвърди идентичността на приложението ви. По подобен начин отдалеченият сървър ще съпостави вашия секретен идентификатор със собствените си, така че не погрешно изпращате искане за Twitter до API на Facebook или обратно. Ако потребителят разреши връзката и всички ключове съвпадат, тогава те се връщат на вашия сайт с дълъг код от случайни числа и букви.
Този код се използва за генериране на нов жетон за достъп. Те се държат подобно на сесийната променлива, която можете да съхраните в „бисквитка“, за да запазите потребителя да влезе в сайта ви. Единствената разлика е, че много услуги ще изпратят обратно токен за достъп и секретен маркер за достъп. Вероятно се нуждаете и от двете, за да изтеглите всички данни от сървъра. Един пример може да е да заявите снимката на потребителския профил, за да запишете копие на собствения ви уебсайт.
Примерна библиотека за Twitter OAuth
Разработчиците често не започват от нулата, така че защо да не погледнете в по-рано изградена библиотека? Това ще ни спести нашето време и от главоболие, когато работим с PHP. Нека погледнем в изграждането на много прост пример в горната част на Twitter API.
Силно препоръчвам 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
- Ръководство за Dev
- Обикновено Twitter OAuth Signin
- Използване на OAuth с Twitter в Cocoa Objective-C
- Консумирането на OAuth интелигентно в релсите
заключение
Надяваме се това въведение в OAuth да ви заинтересува в изграждането на приложения през протокола. Много разработчици се стремят към точно такова решение, а OAuth 2.0 може да бъде бъдещето на взаимосвързани социални мрежи. Вече използвам над две дузини връзки в моя профил в Twitter и бях наистина впечатлен от документацията на разработчика!
Очевидно има много какво да се каже по тази тема. Това не е нещо, което може да бъде напълно в състояние да обработи в едно заседание. Разгледайте мрежата за още решения на OAuth и споделете вашите мисли в дискусионната област по-долу.