Что такое OAuth (открытая авторизация)? - PullRequest
189 голосов
/ 17 ноября 2010

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

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

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

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

Ответы [ 8 ]

310 голосов
/ 17 ноября 2010

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

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

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

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

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

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

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

OAuth позволяет:

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

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

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

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

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

231 голосов
/ 31 марта 2016

Что такое oAuth?

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

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

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

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

Как это работает?

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

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

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

enter image description here

enter image description here

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

Для более:

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

Веб-ссылка

12 голосов
/ 17 ноября 2010

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

9 голосов
/ 04 октября 2013

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, так и даже конечному пользователю!

8 голосов
/ 20 июля 2018

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

Или

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

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

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

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

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

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

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

2 голосов
/ 23 февраля 2017

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

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

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

1 голос
/ 28 декабря 2015

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...