Перейти к основному содержимому

OAuth, или Open Authorization (открытая авторизация) — это протокол авторизации на базе открытого стандарта для делегирования доступа. Это безопасный метод, позволяющий пользователям предоставлять поставщикам услуг (т. е. веб-сайтам и приложениям) доступ к их информации без предоставления им паролей.

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

Что такое токены OAuth?

Токены OAuth предоставляют пользователю доступ к ресурсам. Другими словами, они не служат для аутентификации пользователей, а используются поставщиком услуг для авторизации доступа к другим ресурсам от имени пользователя.

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

Процесс OAuth

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

OAuth 1.0 и OAuth 2.0

В 2012 году был представлен протокол OAuth 2.0 в качестве существенно переработанного протокола OAuth 1.0. Изменения, внесенные в эту версию OAuth, были насколько значительными, что версии 2.0 и 1.0 оказались несовместимыми. Протокол OAuth 2.0 был разработан для устранения уязвимости в процедуре авторизации OAuth, связанной с фиксацией сеанса.

Хотя эта проблема решена в OAuth 2.0, в новой версии преднамеренно не определяется и не поддерживается шифрование, подпись, проверка клиента или привязка канала, а вместо этого требуется, чтобы специалисты по внедрению использовали для этой цели другой протокол безопасности, например HTTPS/TLS.

Ниже приводятся различия между OAuth 1.0 и 2.0.

OAuth и SAML: в чем разница?

SAML — это вариант языка XML, который описывает концепцию, позволяющую одному устройству выполнять как аутентификацию, так и авторизацию от имени одного или нескольких устройств.

С появлением простых форматов кодирования данных, таких как JSON, протокол OAuth стал использоваться и для мобильных устройств. Хотя Oauth — относительно новый протокол, возникший в результате необходимости замены SAML, оба протокола крайне важны для безопасного единого входа (SSO).

Другими словами, OAuth не является альтернативой SAML, поскольку оба протокола могут дополнять друг друга. Например, в среде единого входа протокол SAML может отвечать за аутентификацию (аутентификацию пользователя и предоставление ему доступа), а OAuth — за авторизацию (предоставление доступа к определенным защищенным ресурсам).