Безопасность

Управление входом OAuth

Управление входом OAuth

Важные вещи, которые вам нужно знать об OAuth

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

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

Предположим, вы хотите подписаться на Dev.чтобы (это отличное место для обмена идеями для разработчиков) они позволяют вам зарегистрироваться, используя свою учетную запись GitHub. Как это случилось? Как они узнают, что у вас есть учетная запись GitHub, с которой вы регистрируетесь?

Что еще более важно, как сделать так, чтобы Dev.to не выходит за свои границы, когда речь идет о вашей информации, хранящейся на GitHub?

Участники OAuth

Мы будем придерживаться примера плагина GitHub редактора Atom, который позволяет разработчикам отправлять код в GitHub напрямую, используя интерфейс Atom. Причина этого в качестве примера в том, что GitHub не скрывает детали за сценой, и вы можете увидеть, что происходит под капотом.

Прежде чем мы перейдем к деталям работы OAuth. Давайте подготовим почву, узнав всех участников обмена:

  1. Владелец ресурса или пользователь: Этот пользователь - тот, чья информация об учетной записи должна быть доступна (для чтения и / или записи), чтобы заставить ее работать с приложением.
  2. Клиент: Это приложение, которое запрашивает у вас разрешение на доступ к вашей информации из другой службы. В нашем примере редактор Atom - это клиент.
  3. Ресурс: Ресурс - это ваша фактическая информация, хранящаяся на серверах в каком-то удаленном месте. Доступ к нему можно получить через API, если клиенту предоставлены соответствующие разрешения.
  4. Сервер авторизации: Также с интерфейсом через API. Этот сервер обслуживается поставщиком услуг (в нашем примере - GitHub). И сервер авторизации, и сервер ресурсов называются API, потому что они управляются одним объектом, в данном случае GitHub, и предоставляются разработчику клиента как API.

Регистрация OAuth

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

Например, если вы перейдете в GitHub → Настройки → Настройки разработчика и нажмете «Зарегистрируйте новое приложение». Это даст вам ID клиента которые могут быть обнародованы и Секрет клиента который организация-разработчик должна хранить ... в секрете.

После того, как вам, как разработчику, будут предоставлены идентификатор клиента и секрет, вы должен храните их в безопасности, так как они больше не будут отображаться сервером авторизации. То же самое касается любых других токенов, которые будут выброшены (подробнее о токенах позже).

OAuth 2 Рабочий процесс

Вы зарегистрировали свое приложение. Он разработан и протестирован, и теперь пользователи готовы его использовать. Новому пользователю при регистрации в вашем сервисе будет показана опция «Войти через GitHub». Это первый шаг.

Шаг 1. Запрос на авторизацию

Запрос на авторизацию - это часть, где открывается новое окно (или аналогичное приглашение) с веб-страницей ресурса и просит пользователей войти в систему. Если вы уже вошли в систему на этом устройстве, этот шаг пропускается, и GitHub просто спрашивает вас, хотите ли вы предоставить доступ клиентскому приложению Atom. Это намного более прозрачно в случае Atom, потому что они просят вас вручную перейти на сайт GitHub и предоставить им разрешение.

При посещении URL-адреса у вас запрашивается разрешение.

Обратите внимание на URL-адрес, который показывает, что это безопасная (HTTPS) веб-страница от GitHub.Inc. Теперь вы, пользователь, можете быть уверены, что напрямую взаимодействуете с GitHub. Атом просто ждет, вдали от дороги.

В отличие от Atom, большинство клиентских приложений автоматически загружают страницу входа или разрешений. Хотя это очень удобно, им также можно воспользоваться не по назначению, если клиентское приложение решит открыть фишинговую ссылку. Чтобы избежать этого, вы всегда должны проверять URL-адрес, на который вы перенаправлены, и убедиться, что это правильный URL-адрес и используется протокол HTTPS.

Шаг 2: Получение разрешения на авторизацию

Чтобы уведомить клиент Atom, вам предоставляется токен (разрешение на авторизацию), который затем отправляется клиенту Atom.

Как только пользователь это сделает, его работа будет выполнена. (Фактически, типичный пользователь даже не подозревает об обмене разрешениями на авторизацию. Пример GitHub был выбран, чтобы показать, что происходит именно так).

Шаг 3. Получение токена доступа

Разрешение на авторизацию по-прежнему не является тем объектом, который предоставляет клиенту доступ к информации о пользователе. Это получается с помощью так называемого токена доступа. Что клиентское приложение попытается получить на этом этапе.

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

Проверка личности выполняется, чтобы гарантировать, что пользователя не обманом заставят использовать гнусное приложение, которое выдает себя за законное. Например, если кто-то решит назвать свой исполняемый файл как Atom с тем же именем, логотипом и функциональностью, пользователь может быть обманут, предоставив доступ клиенту, который может неправомерно использовать вашу информацию. Они могут подглядывать или даже действовать без вашего согласия. Сервер авторизации гарантирует, что клиент действительно такой, каким кажется его пользователям.

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

Наконец, с помощью этого токена приложение теперь может получить доступ к необходимой пользовательской информации и другим ресурсам с сервера ресурсов.

Обратите внимание, как во всем этом обмениваться фактическим именем пользователя и паролем, которые никогда не передаются клиенту? В этом прелесть OAuth. Вместо того, чтобы указывать имя пользователя и пароли, которые предоставят приложению полный доступ к ресурсу, вместо этого используются токены. А токен может получить только ограниченный доступ к ресурсу.

Отзыв разрешений

Предположим, вы теряете доступ к своему устройству, на котором было авторизованное клиентское приложение. Вы можете войти в GitHub и перейти в Настройки → Приложения → Авторизованные приложения OAuth, чтобы отозвать разрешение на авторизацию и токен доступа. Я сделаю то же самое, поскольку на приведенных выше скриншотах грант авторизации был публично показан.

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

Shadow of the Tomb Raider для Linux Учебное пособие
Shadow of the Tomb Raider - двенадцатое дополнение к серии Tomb Raider - франшизе приключенческой игры, созданной Eidos Montreal. Игра была очень хоро...
Как увеличить FPS в Linux?
FPS означает Кадров в секунду. Задача FPS - измерить частоту кадров при воспроизведении видео или во время игры. Проще говоря, количество непрерывных ...
Лучшие игры Oculus App Lab
Если вы владелец гарнитуры Oculus, вы должны знать о загрузке неопубликованных приложений. Боковая загрузка - это процесс установки на гарнитуру содер...