Что такое OAuth (открытая авторизация)?


202

Что такое OAuth (открытая авторизация)?

Я почерпнул некоторую информацию из

Но я хочу учиться и знать больше. Я ищу информацию о жизненном цикле. Почему большинство социальных сетей используют этот открытый протокол?

Станет ли это де-факто в ближайшем будущем с различными технологиями (например, ASP.NET)?

Ответы:


327

Что такое OAuth (открытая авторизация)?

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

Если бы вы прочитали это прямо, я бы понял ваше замешательство. Итак, давайте рассмотрим конкретный пример: присоединиться к еще одной социальной сети!

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

Столкнувшись с этой ситуацией, LinkedIn имеет Good Idea (TM), чтобы написать программу, которая автоматически добавляет ваш список друзей, потому что компьютеры намного эффективнее и эффективнее в утомительных и подверженных ошибкам задачах. С момента присоединения к сети теперь так легко, нет никакого способа , , вы бы отказаться от такого предложения, теперь не так ли?

Без API для обмена этим списком контактов вы должны были бы указать LinkedIn имя пользователя и пароль для вашей учетной записи GMail, что дает им слишком много возможностей .

Вот где приходит OAuth. Если ваш GMail поддерживает протокол OAuth, LinkedIn может попросить вас разрешить им доступ к вашему списку контактов GMail.

OAuth позволяет:

  1. Различные уровни доступа: только для чтения VS для чтения и записи. Это позволяет вам предоставить доступ к вашему списку пользователей или двунаправленный доступ для автоматической синхронизации ваших новых друзей в LinkedIn с вашими контактами GMail.
  2. Детализация доступа: вы можете решить предоставить доступ только к вашей контактной информации (имя пользователя, адрес электронной почты, дата рождения и т. Д.) Или ко всему списку друзей, календарю и т. Д.
  3. Позволяет управлять доступом из приложения поставщика ресурсов. Если стороннее приложение не предоставляет механизм отмены доступа, вы застряли бы в том, чтобы они имели доступ к вашей информации. С OAuth есть возможность аннулировать доступ в любое время.

Станет ли это де-факто (стандартом?) В ближайшем будущем?

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

На практике это очень хорошо вписывается в модель социальной сети. Это особенно популярно для тех социальных сетей, которые хотят разрешить сторонние «плагины». Это область, где доступ к ресурсам по своей природе необходим, а также ненадежен по своей природе (т. Е. У вас практически отсутствует контроль качества этих приложений).

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


6
Вы сделали это легко понять. Возможно, я изменил первую строку на что-то вроде этого. «OAuth позволяет уведомить поставщика ресурсов (например, Gmail) о том, что владелец ресурса (например, вы пользователь Gmail) предоставляет разрешение третьей стороне (например, вашей учетной записи LinkedIn) на доступ к их информации (например, вашему списку контактов)». То, что вы написали, т. Е. Провайдер и стороннее «оба», являющиеся Facebook, сбивают с толку. Хотя это своего рода представляет интересный сценарий, то есть Oauth также может использоваться для внутренних целей - между различными проектами вашей компании. Правильно? Поэтому ты ввел сложное вступление?
Мед

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

Когда доверенная сторона авторизует меня, не означает ли это, что это также механизм аутентификации?
переменная

245

Что такое oAuth?

OAuth - это просто безопасный протокол авторизации, который имеет дело с авторизацией стороннего приложения для доступа к данным пользователя без раскрытия их пароля. например. (Авторизуйтесь через fb, gPlus, twitter на многих сайтах ...) все работают по этому протоколу.

Участвующие стороны

Протокол становится проще, когда вы знаете вовлеченных сторон. В основном участвуют три стороны: поставщик oAuth, клиент oAuth и владелец.

  • oAuth Client (приложение, которое хочет получить доступ к вашим учетным данным)
  • oAuth Provider (например, Facebook, Twitter ...)
  • Владелец (человек с фейсбуком, твиттером .. аккаунтом)

Как это устроено?

Я предположил сценарий, когда веб-сайту (stackoverflow) необходимо добавить логин с помощью функции Facebook. Таким образом, Facebook является oAuth-провайдером, а стекопоток - oAuth-клиентом.

  1. Этот шаг сделан разработчиком приложения . В самом начале Facebook (oAuth Provider) не имеет представления о стековом потоке (oAuth Client), потому что между ними нет связи. Итак, самый первый шаг - зарегистрировать stackoverflow на сайте разработчиков Facebook . Это делается вручную, когда разработчикам необходимо предоставить информацию о приложении на Facebook, такую ​​как название приложения, веб-сайт, логотип, URL-адрес перенаправления (важный). Затем stackoverflow успешно регистрируется, получает идентификатор клиента, секрет клиента и т. Д. Из Facebook и работает с OAUTH . введите описание изображения здесь

    2. Теперь, когда пользователь stackoverflow нажимает кнопку входа с помощью кнопки fb . Stackoverflow запрашивает facebook с ClientId (fb использует его для распознавания клиента) и redirectUrl (fb вернется к этому URL после успешного завершения). Таким образом, пользователь перенаправляется на страницу входа в Facebook. Это лучшая часть, которую пользователь (владелец) не передает своим учетным данным facebook в stackoverflow.

введите описание изображения здесь

введите описание изображения здесь

  1. После владельца разрешить Stackoverflow доступ к информации . Затем Facebook перенаправляет обратно в stackoverflow, а также код авторизации, используя redirectUrl, предоставленный на шаге 2.
  2. Затем Stackoverflow связывается с Facebook вместе с полученным кодом авторизации, чтобы убедиться, что все в порядке.
  3. Только тогда Facebook предоставит токен доступа к stackoverflow. Затем токен доступа используется stackoverflow для получения информации о владельце без использования пароля. В этом весь мотив oAuth, в котором учетные данные никогда не подвергаются сторонним приложениям.

Для большего:

Быстрое видео

интернет-ссылка


уверен, что localhost также является URL-адресом, и почему бы вам не истечь и не опубликовать результат здесь.
Бальман Рават

2
да Вы можете использовать IP-адрес в качестве URL перенаправления: redirect_uri = ' 127.0.0.1:4200 ', а имя домена OAuth должно быть 127.0.0.1
Самсон

Но должна ли электронная почта быть одинаковой на клиенте oAuth и провайдере oAuth, чтобы она работала?
Ровайда Хайри

хорошее объяснение
JayD

OAuth 2 - это протокол безопасности, а не протокол авторизации. Ответ начинается с неправильной ноты.
Раджат

13

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


14
OAuth - это не процесс аутентификации, а процесс авторизации.
Андре Карон

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

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

9

Oauth определенно набирает обороты и становится популярным и среди корпоративных API. В мире приложений и данных предприятия предоставляют все больше и больше API-интерфейсов для внешнего мира в соответствии с Google, Facebook, Twitter. С этим развитием формируется трехсторонний треугольник аутентификации

1) провайдер API - любое предприятие, которое предоставляет свои активы через API, например Amazon, Target и т. Д. 2) разработчик - тот, кто создает мобильные / другие приложения на основе этих API 3) конечный пользователь - конечный пользователь услуги, предоставляемой - говорят зарегистрированные / гостевые пользователи Amazon

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

Oauth - это структура авторизации, которая пытается решить вышеупомянутую проблему стандартным способом. С появлением API и приложений эта проблема будет становиться все более актуальной, и любой стандарт, который попытается ее решить - будь то Uath или любой другой - будет чем-то, о чем нужно заботиться, как поставщику / разработчику API, так и даже конечному пользователю!


9

OAuth ( O pen Авт orization) является открытым стандартом для протокола предоставления доступа / делигации. Он использовался как способ для пользователей Интернета предоставлять веб-сайтам или приложениям доступ к их информации на других веб-сайтах, но без предоставления им паролей. Это не касается аутентификации .

Или

OAuth 2.0 - это протокол, который позволяет пользователю предоставлять ограниченный доступ к своим ресурсам на одном сайте, другому сайту, не раскрывая свои учетные данные.

  • Аналогия 1. Многие роскошные автомобили сегодня поставляются с ключами. Это специальный ключ, который вы даете парковщику и, в отличие от вашего обычного ключа, не позволит машине проехать более мили или двух. Некоторые ключи камердинера не открывают багажник, в то время как другие блокируют доступ к вашей бортовой адресной книге мобильного телефона. Независимо от того, какие ограничения накладывает ключ камердинера, идея очень умная. Вы даете кому-то ограниченный доступ к вашему автомобилю с помощью специального ключа, в то время как ваш обычный ключ открывает все. источник от auth0

  • Аналогия 2: Предположим, мы хотим заполнить форму заявки на банковский счет. Здесь Oauth работает так, как вместо заполнения заявителем банк может заполнить форму, используя Adhaar или паспорт.

    Здесь задействованы следующие три объекта:

    1. Заявитель т.е. владелец
    2. Банковский счет - это OAuth Client, им нужна информация
    3. Adhaar / Passport ID является поставщиком OAuth

7

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

Все крупные компании, такие как Facebook, Google, Github, ... используют этот вид аутентификации / авторизации в настоящее время. Например, я только что вошел на этот сайт, используя свою учетную запись Google, это означает, что Stackoverflow не знает мой пароль, он получает разрешение от Google, где мой пароль (очевидно, хэшированный) сохраняется. Это дает много преимуществ, одна из них; В ближайшее время вам не придется создавать несколько аккаунтов на каждом сайте. Один сайт (которому вы больше всего доверяете) может быть использован для входа на все остальные сайты. Так что вам нужно будет запомнить только один пароль.


2

OAuth произошло, когда мы подписали SO аккаунт с помощью кнопки Facebook / Google.

  1. Приложение (SO) перенаправляет пользователя на URL авторизации провайдера. (Отображение веб-страницы, спрашивающей пользователя, желает ли он или она предоставить приложению доступ для чтения и обновления своих данных).
  2. Пользователь соглашается предоставить процесс подачи заявки.
  3. Поставщик услуг перенаправляет пользователя обратно в приложение (SO), передавая код авторизации в качестве параметра.
  4. SO обменивает код для предоставления доступа.

Источник: поставщики услуг OAuth1


Здравствуйте, мне нужна работа с REST API, поэтому установите oAuth, на самом деле я использую Magento, На локальном хосте я установил oAuth, на живом сервере, как я могу установить, я использую GoDaddy VPS сервер, любая помощь? @ John Joe
Gem

@ Ратинам привет, я бы хотел помочь, но это не в моей компетенции. Так жаль.
Джон Джо

Можно ли использовать REST API без oAuth? @ Джон Джо
Gem

@Rathinam да, это зависит от тебя
Джон Джо

1

OAuth - это открытый стандарт авторизации, который обычно используется пользователями Интернета для входа на сторонние веб-сайты с использованием своих учетных записей Microsoft, Google, Facebook или Twitter без раскрытия своего пароля.


2
Я думаю, что вы ошиблись OAuth и OpenID
A23149577

0

OAuth - это протокол, который используется владельцем ресурса (Facebook, Google, твиттер, Microsoft Live и т. Д.) Для предоставления необходимой информации или для предоставления разрешения на успешную запись в стороннюю систему (например, на ваш сайт). Скорее всего, без протокола OAuth учетные данные должны быть доступны для систем третьей части, что будет неприемлемым способом связи между этими системами.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.