Що саме таке OAuth (відкрита авторизація)?


201

Що саме таке OAuth (відкрита авторизація)?

Я отримав деяку інформацію від

Але я хочу вчитися і знати більше. Я шукаю інформацію про життєвий цикл. Чому більшість соціальних мереж покладаються на цей відкритий протокол?

Чи стане це найближчим часом де-факто за допомогою різних технологій (наприклад, ASP.NET)?

Відповіді:


327

Що саме таке OAuth (відкрита авторизація)?

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

Якби ви прочитали це висловлене просто, я зрозумів би ваше сум'яття. Тож давайте підемо з конкретним прикладом: приєднайтесь до чергової соціальної мережі!

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

Зіткнувшись із цією ситуацією, LinkedIn має гарну ідею (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 Provider, oAuth Client та Owner.

  • oAuth Клієнт (додаток, який хоче отримати доступ до вашого облікового запису)
  • oAuth Provider (наприклад, facebook, twitter ...)
  • Власник (особа з facebook, twitter ... акаунт)

Як це працює?

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

  1. Цей крок робить розробник програми . На самому початку facebook (oAuth Provider) не має уявлення про stackoverflow (oAuth Client), оскільки між ними немає зв’язку. Тож найпершим кроком є ​​реєстрація stackoverflow на сайті розробників facebook . Це робиться вручну, коли розробникам потрібно надати інформацію про додаток у facebook, як-от ім’я програми, веб-сайт, логотип, URL-адреса переадресації (важлива). Потім stackoverflow успішно зареєстрований, отримав ідентифікатор клієнта, секрет клієнта тощо з facebook і працює з OAUTH . введіть тут опис зображення

    2. Тепер, коли користувач stackoverflow натискає логін за допомогою кнопки fb . Stackoverflow запитує facebook із ClientId (fb використовує його для розпізнавання клієнта) та redirectUrl (fb повернеться до цієї URL-адреси після успіху). Таким чином, користувач перенаправляється на сторінку входу у facebook. Це найкраща частина користувача (власника), яка не надає своєму обліковому запису Facebook стартовий потік.

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

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

  1. Після того як Власник дозволить Stackoverflow отримати доступ до інформації . Потім Facebook переспрямовує назад до stackoverflow , поряд з аутокодом, використовуючи перенаправленийUrl, наданий на кроці 2.
  2. Потім Stackoverflow зв'язується з facebook разом із отриманим автокодом, щоб переконатися, що все в порядку.
  3. Тільки тоді facebook надасть маркер доступу до stackoverflow. Потім відкрийте маркер доступу використовується stackoverflow для отримання інформації власника без використання пароля. Це весь мотив oAuth, де акустичні дані ніколи не піддаються стороннім додаткам.

Для більш:

Швидке відео

веб посилання


впевнений, що localhost також є URL-адресою, і чому б вам не термін дії та опублікувати результат тут.
Бальман Рават

2
так, ви можете використовувати IP-адресу як URL-адресу переадресації: redirect_uri = ' 127.0.0.1:10200 ', а ім'я домену OAuth має бути 127.0.0.1
Самсон Мабен

Але чи має електронна пошта бути однаковою як для клієнта oAuth, так і для постачальника oAuth, щоб він працював?
Ровейда Хайрі

приємне пояснення
JayD

OAuth 2 - це протокол безпеки, а не протокол авторизації. Відповідь починається з неправильної ноти.
Раджат

13

Простіше кажучи, OAuth - це спосіб додатків отримувати повноваження на вашу інформацію, не отримуючи безпосередньо інформацію про вхід користувача на якийсь веб-сайт. Наприклад, якщо ви пишете заявку на своєму власному веб-сайті і хочете, щоб вона використовувала дані з облікового запису facebook користувача, ви можете скористатися OAuth, щоб отримати маркер через URL-адресу зворотного виклику, а потім використати цей маркер для здійснення дзвінків до API API, щоб отримати їх використовувати дані, поки маркер не закінчиться. Веб-сайти покладаються на нього, оскільки він дозволяє програмістам отримувати доступ до своїх даних, не маючи потреби користувачу безпосередньо розголошувати їх інформацію та розповсюджувати свої облікові дані в Інтернеті, але все ще забезпечують рівень захисту даних. Чи стане це фактичним методом авторизації? Можливо, останнім часом він набирає великої підтримки з 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 та додатків ця проблема стане все більш актуальною, і будь-який стандарт, який намагається вирішити - будь то або будь-який інший - буде чим турбуватись як постачальник / розробник API і навіть кінцевий користувач!


9

OAuth ( O Pen Auth orientation) - це відкритий стандарт для отримання доступу / надання протоколу доступу. Він використовувався як спосіб, щоб користувачі Інтернету надавали веб-сайтам чи програмам доступ до своєї інформації на інших веб-сайтах, але без надання їм паролів. Це не стосується автентифікації .

Або

OAuth 2.0 - це протокол, що дозволяє користувачеві надавати обмежений доступ до своїх ресурсів на одному веб-сайті, на інший, без необхідності виставляти свої дані.

  • Аналогія 1: Багато розкішних автомобілів сьогодні оснащені ключем камердинера. Це спеціальний ключ, який ви даєте паркувальнику, і на відміну від вашого звичайного ключа, не дозволить автомобілю проїхати більше милі чи двох. Деякі ключі камердинера не відкриють багажник, а інші заблокують доступ до адресної книги вашого мобільного телефону. Незалежно від того, які обмеження встановлює ключ камердинера, ідея дуже розумна. Ви надаєте комусь обмежений доступ до вашого автомобіля спеціальним ключем, використовуючи звичайний ключ, щоб розблокувати все. src від auth0

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

    Тут залучені наступні три суб'єкти:

    1. Заявник, тобто власник
    2. Банківський рахунок - клієнт OAuth, їм потрібна інформація
    3. Ідентифікатор Adhaar / Passport - постачальник 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


Привіт, мені потрібна робота з API REST, тому встановіть oAuth, фактично я використовую Magento, в localhost, я встановив oAuth, на живому сервері як я можу встановити, я використовую сервер GoDaddy VPS, будь-яку допомогу? @john joe
Gem

@Rathinam привіт, я хотів би допомогти, але це не в мене. Вибачаюся.
Джон Джо

Чи можна використовувати API REST без oAuth? @John Joe
Gem

@Rathinam так, це залежить від тебе
Джон Джо

1

OAuth - це відкритий стандарт для авторизації, який зазвичай використовується як користувачі Інтернету для входу на сторонні веб-сайти, використовуючи свої облікові записи Microsoft, Google, Facebook або Twitter, не піддаючи свій пароль.


2
Я думаю, ви помилилися OAuth та OpenID
A23149577

0

OAuth - це протокол, який використовується власником ресурсів (facebook, google, твітер, мікрософт в прямому ефірі тощо) для надання необхідної інформації або надання дозволу на успішність запису сторонній системі (наприклад, на ваш сайт). Швидше за все, без протоколу OAuth облікові дані повинні бути доступні для систем третьої частини, що буде невідповідним способом зв'язку між цими системами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.