Oauth vk что это такое

OAuth 2 или «Открытая авторизация» — это стандарт, разработанный для предоставления сайту или приложению доступа к ресурсам, размещенным другими веб-приложениями. Он появился в 2012 году, заменив версию 1.0, и стал отраслевым стандартом для онлайн-авторизации. OAuth 2.0 обеспечивает доступ и ограничивает действия клиентских приложений над ресурсами, выполняемыми от имени пользователя. При этом учетные данные пользователя не передаются.

Принципы OAuth2.0

OAuth 2.0 является протоколом авторизации, важно не путать его с протоколом аутентификации. Он служит средством предоставления доступа к набору ресурсов (удаленные API, или данным пользователя).

В OAuth 2.0 используются токены (это часть данных, которая является авторизацией для доступа от имени конечного пользователя). OAuth 2.0 не определяет конкретный формат токенов. Однако часто используется формат JSON Web Token (JWT), что позволяет эмитентам включать данные в сам токен. Кроме того, по соображениям безопасности токены могут иметь ограниченный срок действия.

What is OAuth?

Роли OAuth2.0

Роли — часть основной спецификации фреймворка авторизации OAuth2.0. Они определяют основные компоненты системы OAuth 2.0 и распределяются так:

Что такое OAuth 2.0

  • Владелец ресурса: пользователь или система, которая владеет защищенными данными и может предоставлять к ним доступ.
  • Клиент: Это система, которой требуется доступ к защищенным ресурсам. Чтобы его получить, Клиент должен иметь соответствующий Тoкен.
  • Сервер авторизации: сервер, который получает запросы от Клиента на получение токенов и выдает их после успешной аутентификации, а также согласия владельца. Здесь присутствуют две конечные точки: точка авторизации, которая обрабатывает интерактивную аутентификацию и согласие пользователя, и точка токена, которая участвует во взаимодействии между машинами.
  • Сервер ресурсов: сервер, который защищает ресурсы пользователя и получает запросы на доступ от клиента. Он принимает и проверяет токен, после чего возвращает соответствующие ресурсы.

Области действия OAuth 2.0

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

Токены и авторизационный код

Напрямую возвращать токен владельцу после успешного входа на сервер OAuth 2 небезопасно. Вместо этого возвращается код, который затем обменивается на токен. Кроме того, сервер может выдать токен обновления. В отличие от тoкенов доступа, тoкены обновления обычно имеют длительный срок действия. Они могут быть обменены на новые после его истечения.

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

Бесплатный тестовый доступ к облаку на 30 днейПолучить

Как работает OAuth 2.0?

Прежде чем использовать OAuth 2.0, клиент должен получить свои учетные данные, идентификатор (ID), а также секрет с сервера, чтобы идентифицировать и аутентифицировать себя при запросе токена.

ЧТО ТАКОЕ OAUTH 2.0?

При использовании OAuth 2.0 запросы на доступ инициируются клиентом, например, мобильным приложением, сайтом, приложением Smart TV и т. д. Запрос, обмен, ответ происходят в следующем порядке:

  1. Клиент посылает запрос на авторизацию с сервера передавая ID и секрет; он также предоставляет области действия и URI конечной точки (URI перенаправления) для отправки токена или авторизационного кода.
  2. Сервер авторизации аутентифицирует Клиента, а также проверяет, разрешены ли запрошенные области.
  3. Владелец ресурса взаимодействует с сервером для предоставления доступа.
  4. Сервер авторизации перенаправляет обратно код или токен, в зависимости от типа предоставления. Также может быть возвращен Refresh Token.
  5. С токеном клиент запрашивает доступ к ресурсу с сервера ресурсов.
Еще по теме:  Вязаные идеи Вконтакте спицами

Типы грантов в OAuth 2.0

Гранты — это набор шагов, которые должен выполнить клиент, чтобы получить доступ к ресурсам. Платформа авторизации предоставляет несколько типов грантов для различных сценариев:

  • Предоставление кода авторизации: сервер возвращает одноразовый код клиенту, который затем обменивается на токен. Это предпочтительный вариант для традиционных веб-приложений, где обмен может безопасно происходить на стороне сервера. Поток кода может использоваться одностраничными приложениями (SPA) и мобильными/собственными приложениями. Однако здесь секрет не может быть надежно сохранен, поэтому аутентификация во время обмена ограничивается использованием идентификатора. Лучшей альтернативой является код авторизации с грантом PKCE.
  • Неявное предоставление: упрощенный процесс, в котором токен возвращается непосредственно клиенту. В неявном потоке сервер может вернуть его в качестве параметра в URI обратного вызова или в качестве ответа на сообщение формы.
  • Предоставление кода авторизации с ключом подтверждения для обмена кодами (PKCE). Этот поток авторизации аналогичен предоставлению кода, но с дополнительными шагами, которые делают его более безопасным для мобильных/собственных приложений и SPA.
  • Тип гранта учетных данных владельца ресурса: этот грант требует, чтобы клиент сначала получил учетные данные владельца, которые передаются на сервер. Поэтому он ограничен Клиентами, которым полностью доверяют. Его преимущество заключается в том, что не используется перенаправление на сервер, поэтому оно применимо, когда перенаправление невозможно.
  • Тип гранта учетных данных клиента: используется для неинтерактивных приложений, например, автоматизированных процессов, микросервисов и т. д. В этом случае приложение аутентифицируется само по себе с использованием идентификатора и секрета.
  • Поток авторизации устройства: позволяет использовать приложения на устройствах с ограниченным вводом, таких как смарт-телевизоры.
  • Предоставление токена обновления: поток, который включает обмен старого на новый.

В чём отличие с OpenID

OAuth служит для авторизации, то есть с его помощью одно приложение получает доступ к другому. А OpenID является надстройкой к нему, которая добавляет информацию о логине и профиле вошедшего пользователя. С его помощью становятся возможными сценарии, при которых один логин может использоваться в нескольких приложениях (подход single sign-on).

Поток в OpenID выглядит аналогично OAuth, но в запросе применяется единый opened, а клиент получает access token и id token.

Источник: www.cloud4y.ru

Oauth vk что это такое

Раньше для авторизации сайты и приложения использовали простую схему логин/пароль. Это существенно усложняло задачу взаимодействия приложений: чтобы позволить приложению получить доступ к данным другого приложения, требовалось передать учетные данные. Но это порождало множество проблем, связанных с небезопасным хранением учетных данных и получением неограниченного доступа. Для обеспечения делегированного доступа был создан открытый протокол авторизации OAuth.

Терминология OAuth

Разберем несколько общих терминов. Для упрощения под OAuth будем подразумевать OAuth 2.0.

  • Владелец ресурса ( Resource Owner ) – объект, предоставляющий доступ к защищенным ресурсам.
  • Ресурсный сервер ( Resource Server ) – сервер, на котором размещаются защищенные ресурсы и обрабатываются запросы на доступ.
  • Клиент ( Client ) – приложение, которое хочет получить доступ к ресурсному серверу и выполнять действия от имени владельца ресурса. Конфиденциальным клиентам (серверные приложения) можно доверять надежное хранение токена, необходимого для доступа к ресурсам, а публичным (мобильные и JS-приложения) – нельзя.
  • Сервер авторизации ( Authorization Server ) – сервер, который знает владельца ресурса и может авторизовать клиента для доступа к ресурсному серверу.

Функционирование протокола OAuth

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

Еще по теме:  Как правильно написать адрес Вконтакте на визитке

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

Рис. 1. Используя OAuth, клиент (Spotify) может получить доступ к ресурсному серверу (Facebook) без учетных данных от имени владельца ресурса (Боба).

При выводе всплывающего окна OAuth работает в фоновом режиме (Рис. 2):

Рис. 2. Делегирование доступа к данным Facebook для Spotify

  • Spotify отправляет Бобу сообщение с запросом доступа к его публичному профилю, друзьям, почте и т. д.
  • Боб разрешает Spotify сбор указанных данных.
  • Spotify отправляет ответ в API Facebook.
  • Facebook API проверяет присланный ответ и возвращает Spotify токен для доступа к защищенным ресурсам.
  • Spotify высылает токен на другой API Facebook, предоставленный сервером авторизации.
  • Facebook API отправляет запрошенные данные в Spotify.

Заглянем под капот OAuth

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

Области и токены OAuth

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

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

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

Условно можно выделить четыре типа областей:

  • доступ для чтения;
  • доступ на запись;
  • доступ для чтения и записи;
  • без доступа.

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

Существует еще один тип токенов – обновляемый (refresh tokens), который используется для автоматического получения нового экземпляра, когда старый больше не функционируют ( e xpired). Такие приложения, как Facebook, могут обеспечить ещё б ó льшую степень защиты, периодически проверяя авторизацию с помощью принудительного использования дополнительных refresh -токенов для получения access -токенов . R efresh tokens имеют важную особенность: они могут быть отозваны путем их аннулирования и возврата клиентского доступа к привилегированным ресурсам.

Разрешения и потоки OAuth

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

  • приехать к кинотеатру;
  • войти в него;
  • пройти к кассе;
  • найти сеанс;
  • пообщаться с сотрудником кассы;
  • оплатить;
  • получить билет.
  • перейти на сайт театра;
  • найти сеанс;
  • добавить билет в заказ;
  • оплатить;
  • получить билет на e-mail.

Разрешения (grants) диктуют клиенту порядок операций по получению access-токена. Этот уникальный порядок называется потоком.

Вся коммуникация между владельцем ресурса, клиентом и сервером авторизации происходит через строки запроса с параметрами. В этих параметрах содержится информация, необходимая серверу авторизации для понимания того, какому потоку следовать:

  • Код разрешения авторизации (Authorization Code Grant) – наиболее распространенный тип разрешений (Рис. 4). Клиент получает уникальный код, выданный сервером авторизации, который затем обменивается на токен.
  • Код разрешения авторизации с PKCE – этот вариант используется для публичных клиентов, которым нельзя доверять хранение учетных данных. Используя расширение PKCE (Public Key for Code Exchange), клиент и сервер обмениваются хэшем, чтобы убедиться, что связь не скомпрометирована.
  • Учетные данные клиента – иногда клиенты запрашивают доступ для себя, а не для владельца ресурса. Эти экземпляры используют внутренние службы, которым требуется доступ к облачному хранилищу. В этом случае клиент сделает запрос, включающий client_id и client_secret , которые сервер авторизации проверяет для выдачи access-токенов. Этот тип разрешений должен использоваться только с конфиденциальными клиентами.
  • Код устройства – используется для устройств, подключенных к интернету, которые не имеют браузеров или снабжены неудобными виртуальными клавиатурами, например, игровая консоль или Smart TV.
Еще по теме:  Как донатить голоса в ВК через телефон

Пример: GitHub SSO

Изучим описанные концепции на примере. Teleport – опенсорсный инструмент удаленного доступа, позволяющий юзерам входить в систему через Github single sign-on (SSO) с использованием OAuth. Действующие лица :

Рис. 4. Поток разрешения авторизации

  • Client : Teleport.
  • Resource Owner : пользователь Teleport.
  • Authorization Server : сервер авторизации Github ( GAS ).
  • Resource Server : ресурсный сервер Github ( GRS ).

Рассмотрим поток шаг за шагом.

Шаг 1. Пользователь Teleport получает доступ к приложению Teleport.

Шаг 2. Приложение предлагает пользователю Teleport войти с помощью Github SSO.

Шаг 3. Пользователь Teleport нажимает «Войти» и перенаправляется на другую страницу со своими параметрами, передаваемыми в HTTPS GET запросе:

  • authorization_server – URL-адрес, обработанный GAS. Для GitHub это https://github.com/login/oauth/authorize
  • response_type=code – оповещает GAS , что Teleport ожидает код авторизации
  • client_id – передает GAS строку, которую он может проверить по реестру авторизованных клиентов. В коде ниже это 12345 .
  • redirect_uri – сообщает GAS , на какой URL направить юзера со всеми переменными. Здесь используется следующий: https://teleport.example.com:3080/v1/webapi/github/callback
  • scope – определяет ограничения доступа к ресурсам
  • state – случайно генерируемая Teleport строка для идентификации клиента и сервера авторизации (в примере используется Syl )

Собрав воедино все, получим следующую строку приглашения:

Шаг 4. Как только GAS получит запрос, он проверит client_id в реестре. Зная, что Teleport ожидает код авторизации, GAS отправит пользователя обратно на URL-адрес с переданными параметрами:

https://teleport.example.com:3080/v1/webapi/github/callback?code=pkzdZumQi1 code=pkzdZumQi1 client_id=12345

  • сверстаете свой первый адаптивный макет с учетом семантики и множества декоративных элементов на HTML и CSS;
  • поймете, как с помощью JavaScript разрабатывать пользовательские интерфейсы;
  • разберетесь, как JavaScript используется в работе с backend и создадите свой первый обмен данными сервером;
  • углубитесь в более сложную разработку на React.js и напишете свой интернет-магазин;
  • изучите основные команды для работы с GIT, важнейшего инструмента для работы в любой команде.
  • Источники

    Источник: proglib.io

    OAuth Vk.com: что это такое, как убрать

    VK требует, чтобы в запросе Access-токена Сlient Сredentials передавались не в Basic Auth в заголовке Authorization (как у большинства провайдеров), а в теле запроса. Но перенести Сlient Сredentials в тело запроса просто — настройкой в application.properties:

    То есть поведение по умолчанию было таким:

    Будет не так

    А будет другим — Client Credentials уйдут в тело запроса.

    В ответе отсутствует token_type: Bearer

    Запрос изменили, но с ответом тоже не все ладно. В ответном JSON отсутствует пункт «token_type»:»Bearer»:

    А Spring ожидает, что token_type должен быть непустым и выбрасывает исключение. Поэтому ниже мы модифицируем ответ с помощью CustomTokenResponseConverter.

    После успешного получения Access Token-а по протоколу OpenID идет обращение за данными авторизовавшегося пользователя. Это конечная точка Userinfo провайдера. Тут ответ тоже нестандартный.

    VK возвращает по адресу Userinfo ответ в обертке

    Обычно в ответе сразу перечисляются атрибуты пользователя, но не в VK. Здесь ответ приходит обернутым в response и еще в массив:

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...