Оглавление:
Многие роскошные автомобили поставляются с ключами. Это специальный ключ, который вы даете парковщику, и в отличие от вашего обычного ключа, он позволяет проехать только на короткое расстояние, блокируя доступ к багажнику и бортовому мобильному телефону. Независимо от ограничений, налагаемых ключом камердинера, идея очень умная. Вы предоставляете кому-то ограниченный доступ к вашему автомобилю с помощью специального ключа, а другой - для разблокировки всего остального. - Официальное руководство по OAuth 1.0
Именно так в руководящих принципах спецификаций сообщества объясняется OAuth еще в 2007 году. И хотя OAuth 2.0 является совершенно новым протоколом, то же описание остается в силе - OAuth остается способом предоставления пользователям доступа (и ограниченного доступа) к своим сторонним ресурсам. ресурсы без обмена своими паролями.
Если вы регулярно находитесь в Интернете, скорее всего, вы наткнулись на сайт, который использует OAuth. В конце концов, крупнейшие в мире веб-сайты, такие как Facebook, Google, MySpace, Twitter, Photobcuket, Yahoo, Evernote и Vimeo, используют этот стандарт аутентификации. Продолжайте читать, чтобы узнать больше об этом стандарте, и почему следующее поколение, OAuth 2.0, все еще используется на относительно экспериментальной основе.
Что такое OAuth 2.0?
Во-первых, вам нужно знать, что делает протокол OAuth: он позволяет авторизацию интерфейса прикладного программирования между двумя веб-приложениями или приложениями для настольных компьютеров. В результате веб-сайты могут делиться защищенными ресурсами с другими веб-сайтами и службами.
Например, если вы играете в Scramble с друзьями на своем iPad, вы можете ввести свои учетные данные Facebook, что позволит игре просмотреть список ваших друзей, чтобы узнать, кто из них играет в игру, и пригласить других присоединиться. Или вы можете общаться с друзьями в Google+, основываясь на том, кто подписан на вас в Twitter. Эти типы приложений удобны для пользователей, но они включают предоставление одному сайту или программе доступа к информации о вас на другом сайте.
OAuth 2.0 работает так же, как и первое воплощение OAuth, но это совершенно новый стандарт. Это означает, что он не имеет обратной совместимости с OAuth 1.0. Версия 2.0 убрала многие проблемы с оригинальным OAuth и внесла улучшения.
Сохраняя в основном архитектуру первой версии, 2.0 улучшил:
- Аутентификация и подписи. OAuth 2.0 позволил кому-то на стороне клиента реализовать протокол.
- Пользовательский опыт и альтернативные способы выдачи токенов
- Производительность, особенно на крупных сайтах и сервисах
Преимущества использования OAuth 2.0
Одной из лучших причин использования OAuth является то, что он делает обмен намного проще. Мы уже привыкли загружать фотографии в Instagram и автоматически публиковать их в Twitter и Facebook. На самом деле, именно такая простота использования и кроссовера делает социальные сети такими привлекательными.
Но это не все. Для конечных пользователей OAuth означает, что вам не нужно создавать другой профиль. Например, если вы хотите оставить комментарий к статье, вы можете использовать для этого свои учетные данные Facebook или Twitter вместо того, чтобы регистрировать учетную запись на данном веб-сайте. Это отлично подходит для сайтов, на которых вы обычно не активны или которым вы не доверяете. Это также может принести пользу сайтам, обеспечив идентификацию пользователей на Facebook, уменьшая вероятность спама в комментариях.
OAuth также означает, что нужно помнить меньше паролей. Рекомендуется использовать разные пароли для разных сервисов сайта. Поэтому вместо того, чтобы запоминать другой пароль для вас, вам нужно всего лишь использовать свой пароль Facebook для доступа к сервису. Кстати, не увидит ваш пароль.
Вы также можете ограничить доступ к ресурсам через OAuth. Например, играя в игру на Facebook, вы можете указать, хотите ли вы, чтобы игра была размещена на вашей стене от вашего имени или нет.
Для разработчика OAuth 2.0 предоставляет уже разработанный код для аутентификации, отображения социального взаимодействия и отображения профиля пользователя. Это означает, что разработчикам приходится сталкиваться с меньшими ошибками и меньшим риском, поскольку API уже отлажен, протестирован и проверен. Наконец, вы также получаете выгоду от меньшего количества данных, которые хранятся на ваших собственных серверах.
Как появился OAuth 2.0
Совершенно очевидно, что OAuth является ответом на призыв к безопасным вычислениям и простоте использования для различных веб-сервисов. OAuth 2.0, с другой стороны, возникла из-за необходимости сделать OAuth менее сложным. Но вся идея для обоих на самом деле пришла от OpenID.
OpenID - это сервис, который позволяет пользователям входить в различные сервисы, используя учетные данные для входа с другого веб-сайта. Но OpenID был очень ограничен, поэтому группа людей, работающих над разными протоколами авторизации для своих сайтов, собралась вместе. Первые реализации OAuth были сделаны в 2007 году, а первая редакция появилась два года спустя.
OAuth 2.0 появился на сцене в 2010 году. Его целью было сосредоточиться на простоте клиент-разработчик и сделать его более легко масштабируемым, одновременно улучшая пользовательский опыт.
Проблемы впереди?
Хотя Google, Klout и другие крупные компании внедряют OAuth 2.0, возможно, впереди этого протокола еще впереди каменистая дорога. Сообщество OAuth 2.0 подвергается критике, в том числе по поводу безопасности протокола (многие считают, что он менее безопасен, чем OAuth 1.0).
По словам Хаммера, если используется компетентным программистом, хорошо разбирающимся в веб-безопасности, OAuth 2.0 работает. К сожалению, только небольшое меньшинство разработчиков соответствует этому счету.
Кроме того, коды OAuth 2.0 не подлежат повторному использованию. Например, протоколы OAuth 2.0, используемые Facebook, не могут быть легко использованы другим сайтом. Более того, новый протокол на самом деле намного сложнее, чем оригинальный.
Но для многих реальный толчок заключается в том, что OAuth 2.0, похоже, не дает какого-либо реального преимущества или улучшения по сравнению с 1.0. Hammer пишет, что если вы успешно внедряете 1.0, нет никаких оснований для обновления до 2.0.
OAuth 2.0, однако, все еще очень жив. Если он рассматривает критику и поднимаемые вопросы, он все равно может найти место в качестве очень мощного протокола. На момент написания, однако, версия 1.0 все еще считается официальной, стабильной и протестированной версией OAuth. Тем не менее, для разработчиков, которые стремятся работать с громкими именами в онлайн-мире, безопасная реализация этого протокола может стать ключевым навыком в недалеком будущем.