Домашняя » интернет » Что такое OAuth Connect и как его использовать

    Что такое OAuth Connect и как его использовать

    Многие из нас вступают в контакт с OAuth при просмотре веб-страниц, и большинство из нас даже не подозревают о его существовании. OAuth (открытая аутентификация) - это система, которая предоставляет сторонним веб-сайтам ограниченный доступ к учетным записям пользователей, например учетным записям 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) сначала перенаправит вас (пользователя) на страницу авторизации. Затем пользователь входит в основную сеть, а затем либо принимает, либо отклоняет новое соединение со сторонним веб-сайтом. Технология безболезненно проста, и вы всегда можете неавторизовать соединения из настроек вашей учетной записи в любой момент. Обратите внимание, что ваш пароль никогда не передается третьим лицам, что делает этот протокол намного безопаснее, чем его аналог.

    Как работает процесс

    В стандартном вызове OAuth необходимо учесть 3 стороны:

    • Поставщик услуг - Основная сеть, из которой вы пытаетесь получить данные. Они предоставляют ответ 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 вы можете создать кнопку входа для ваших пользователей. Это направит их сначала на защищенную страницу API Twitter, где пользователь либо принимает, либо запрещает ваше соединение. Независимо от своего выбора пользователь затем перенаправляется на URL-адрес обратного вызова вашего приложения. Весь открытый протокол имеет очень чистую перспективу, которая позволяет быстро развиваться, особенно с библиотеками, доступными практически на каждом языке.

    Ссылки по теме

    • Руководство пользователя hueniverse oauth 1.0
    • Нежное введение в OAuth
    • OAuth FAQ
    • Руководство по разработке аутентификации Facebook
    • Простой Твиттер OAuth Signin
    • Использование OAuth с Twitter в Какао Objective-C
    • Интеллектуальное потребление OAuth в Rails

    Заключение

    Надеюсь, это введение в OAuth заинтересовало вас в создании приложений по протоколу. Многие разработчики стремились именно к такому решению, и OAuth 2.0 может стать будущим взаимосвязанных социальных сетей. Я уже использую более двух десятков подключений к своей учетной записи Twitter и действительно впечатлен документацией разработчика!

    Ясно, что есть много, чтобы сказать по этой теме. Это не то, что вы можете полностью обработать за один присест. Поищите в сети больше решений OAuth и сообщите нам свои мысли в области обсуждения ниже.