Как использовать OAuth-аутентификацию с DigitalOcean как пользователь или разработчик

Вступление

Версия 2 API DigitalOcean включает в себя множество изменений, которые улучшают опыт для всех. Одной из наиболее важных новых функций является аутентификация OAuth для пользователей и приложений.

Система OAuth позволяет вам проходить аутентификацию с вашей учетной записью, используя API. Этот доступ может быть предоставлен в виде маркеров личного доступа для простых случаев использования, но он также позволяет гибко разрешать приложениям доступ к вашей учетной записи.

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

Авторизация приложений для использования вашей учетной записи в качестве пользователя

Если вы просто заинтересованы в предоставлении приложениям доступа к вашей учетной записи, вы сможете предоставить авторизацию через приложение и отозвать доступ через панель управления DigitalOcean.

При использовании приложения, использующего аутентификацию OAuth DigitalOcean, вы будете перенаправлены на страницу, чтобы выбрать, хотите ли вы предоставить приложению доступ к вашей учетной записи DigitalOcean.

Страница будет выглядеть так:

изображение: https: //assets.digitalocean.com/articles/apps_and_api/auth_request.png [запрос на авторизацию приложения DigitalOcean]

Запрос будет определять, запрашивает ли приложение доступ только для чтения или доступ для чтения и записи. Если вы решите предоставить запрошенный доступ, вы вернетесь в приложение, которое теперь будет аутентифицироваться для работы с вашей учетной записью.

Если вы хотите отозвать доступ, просто перейдите в свою учетную запись DigitalOcean и щелкните раздел «https://cloud.digitalocean.com/settings/applications[Apps & API]» в левом меню навигации на панели управления:

изображение: https: //assets.digitalocean.com/articles/apps_and_api/left_nav.png [левая навигация DigitalOcean]

В разделе «Авторизованные приложения» вы должны увидеть запись для каждого из приложений, которым вы предоставили доступ.

изображение: https: //assets.digitalocean.com/articles/apps_and_api/authorized_app.png [авторизованное приложение DigitalOcean]

Нажмите кнопку «отозвать», чтобы удалить доступ соответствующего приложения к вашей учетной записи:

изображение: https: //assets.digitalocean.com/articles/apps_and_api/revoke_access.png [DigitalOcean oauth revoke]

Приложение больше не будет иметь доступа к вашей учетной записи.

Использование OAuth для аутентификации пользователей как разработчика

Чтобы использовать OAuth в качестве разработчика, вам нужно пройти два отдельных процесса. Сначала вы должны зарегистрировать свое приложение, чтобы получить учетные данные, необходимые для запроса доступа. После этого вы должны разработать свое приложение, чтобы правильно отправлять запросы и обрабатывать ответы как от браузера пользователя, так и от серверов DigitalOcean.

Регистрация приложений разработчика с DigitalOcean

Если вы разработчик, которому требуется аутентифицировать пользователей через OAuth, вам сначала необходимо зарегистрировать свое приложение через панель управления DigitalOcean.

В разделе панели управления «https://cloud.digitalocean.com/settings/applications[Apps & API]» в середине страницы вы увидите раздел «Приложения для разработчиков»:

изображение: https: //assets.digitalocean.com/articles/apps_and_api/developer_apps_section.png [раздел приложений разработчика DigitalOcean]

Чтобы зарегистрировать новое приложение, нажмите кнопку «Зарегистрировать новое приложение» справа:

изображение: https: //assets.digitalocean.com/articles/apps_and_api/register.png [приложение для регистрации DigitalOcean]

Вы попадете на страницу регистрации.

изображение: https: //assets.digitalocean.com/articles/apps_and_api/app_info.png [информация о регистрации приложения DigitalOcean]

Здесь вам нужно будет предоставить некоторую основную информацию, такую ​​как название вашего приложения и домашняя страница, и предоставить краткое описание. Имейте в виду, что эта информация будет отображаться на странице запроса авторизации для пользователей.

Вам также нужно будет указать URL-адрес обратного вызова для приложения. Это место, где вы настроите свое приложение для обработки ответов на авторизацию. См. Следующий раздел или ссылку: руководство [OAuth-аутентификация], чтобы узнать больше о том, что необходимо для обработки OAuth-запроса.

Когда вы отправляете свои данные, вы попадете на страницу с информацией, необходимой для создания приложения авторизации или сценария, который будет жить по указанному вами URL обратного вызова. Это включает в себя ваш идентификатор клиента, ваш секретный ключ клиента и предварительно отформатированную ссылку на запрос авторизации для перенаправления пользователей на:

изображение: https: //assets.digitalocean.com/articles/apps_and_api/app_details.png [сведения о приложении DigitalOcean]

Внедрение OAuth DigitalOcean в ваше приложение

Чтобы реализовать аутентификацию OAuth, ваше приложение должно сначала перенаправить пользователей на конечную точку по адресу:

https://cloud.digitalocean.com/v1/oauth/authorize

Этот редирект должен содержать ваш идентификатор клиента, URL обратного вызова в качестве значения + redirect_uri + и установить + response_type = code +. При желании вы можете установить область действия запрашиваемого токена (например, + scope = read% 20write + для полного доступа). Пример перенаправления может выглядеть так:

https://cloud.digitalocean.com/v1/oauth/authorize?client_id=&redirect_uri=&response_type=code&scope=read%20write

Когда пользователь перенаправляется на предоставленный вами URL-адрес обратного вызова после предоставления доступа, код, который вам нужно захватить, будет включен в качестве параметра запроса.

Затем отправьте запрос POST по адресу:

https://cloud.digitalocean.com/v1/oauth/token

Включите ваш идентификатор клиента, секрет клиента, URL обратного вызова в качестве значения + redirect_uri +, код, полученный вами от перенаправления пользователя, и установите + grant_type = authorization_code +. Пример запроса может выглядеть так:

https://cloud.digitalocean.com/v1/oauth/token?client_id=&client_secret=&code=&grant_type=authorization_code&redirect_uri=

Весь ответ будет выглядеть примерно так:

{"provider"=>:digitalocean, "info"=>{"name"=>"some_name", "email"=>"[email protected]"}, "credentials"=>{"token"=>"", "expires_at"=>1405443515, "expires"=>true}, "extra"=>{}}

Затем вы можете использовать ++ в последующих запросах для выполнения действий над учетной записью пользователя.

Большинство разработчиков используют библиотеку OAuth для выбора языка, чтобы упростить этот процесс, но всегда полезно иметь общее представление о том, что происходит за кулисами.

Принятые области

Области позволяют вам указать тип доступа, который вам нужен. Области ограничивают доступ к токенам OAuth. Вот список областей, принятых конечной точкой OOuth DigitalOcean:

Name Description

(no scope)

Defaults to read scope.

read

Grants read-only access to user account. This allows actions that can be requested using the GET and HEAD methods.

read write

Grants read/write access to user account, i.e. full access. This allows actions that can be requested using the DELETE, PUT, and POST methods, in addition to the actions allowed by the read scope.

Ресурсы для разработчиков

omniauth-digitalocean Gem

Поскольку DigitalOcean использует Ruby для внутреннего использования, мы предоставляем общедоступную стратегию OAuth с открытым исходным кодом. Драгоценный камень omniauth-digitalocean находится на Github и публикуется в RubyGems. Он основан на OmniAuth, широко используемой библиотеке на основе Rack для проверки подлинности с несколькими поставщиками, и представляет собой простой способ интеграции «входа с помощью DigitalOcean» в платформы Rails и Rack.

Заключение

OAuth - это хорошо зарекомендовавший себя способ предоставления приложениям доступа к вашей учетной записи или запроса доступа к учетной записи у пользователей. Страница «Приложения и API» DigitalOcean стремится сделать этот процесс максимально простым для обеих сторон.

Чтобы получить технический обзор OAuth API DigitalOcean, нажмите здесь: DigitalOcean OAuth Overview.

Чтобы узнать больше о том, как работает OAuth, ознакомьтесь с нашей статьей сообщества: An Введение в OAuth 2.

Related