Різниця між OpenID та OAuth
Як не дивно, плутанина в поняттях OpenID і OAuth зустрічається досить часто. Люди використовують їх як взаємозамінні терміни або вважають OAuth своєрідною новою покращеною версією OpenID. Але насправді це зовсім різні речі. Щоб було куди посилатися у таких випадках, пишу пост.
Цей пост не про те, що з цих двох слів "краще", що "зло" чи "померло". Це просто констатація фактів.
Аналогія. OpenID це ваш паспорт: він каже, хто ви, але що він дає, залежить від місця, куди ви з ним прийшли. OAuth - ключі від вашої машини: з ними можна їздити на вашій машині, навіть не знаючи, як вас звуть.
І Твіттер, і Фейсбук використовують OAuth як деталь реалізації, але в іншому вони нічого спільного не мають. Ролі протоколів виглядають у цьому випадку так:
Аналогія. "Вхід через OAuth" - це ключі від машини, в якій з нагоди виявилися ще й іменні документи власника.
Важливо розуміти, що оскільки аутентифікацію надає пропрієтарний API, то це не "вхід через OAuth", а "вхід через Твіттер/Фейсбук". Насправді це означає, що не можна написати якусь узагальнену OAuth-бібліотеку для входу через будь-який довільний сервіс типу Твіттера і Фейсбука.
OpenID Connect
Ідея узагальненого входу через OAuth може працювати, якщо замість пропрієтарного API автентифікації стандартизувати якийсь відкритий. І така спроба була – OpenID Connect. Там головна ідея OpenID — відкрита автентифікація — відокремлюється від протоколу обміну ключами, за який береться саме OAuth. І ще вирішуються супутні питання типу discovery-механізму, якого в OAuth немає.
Втім, практично OpenID Connect ніде немає. Чому зовсім окрема тема.
Коментарі: 18
Мені не дуже зрозуміладоля OpenID на тлі Твітера та Фейсбуку, які дають доступ до набагато більшого масиву інформації про користувача та його зв'язки.
Ну, доля цілком зрозуміла: він повільно вмирає. Але я спеціально не торкався цього тут.
Незрозуміло, як тоді розцінювати http://github.com/intridea/omniauth - як парадокс?
Ніякого феномена. Це не узагальнена бібліотека, там написано вручну код для кожного провайдера.
Чи хотілося б ще зрозуміти тепер, чому не використовується OpenID Connect? Іване, можливо поділіться посиланням на якесь пояснення чи краще поясніть у двох словах?
gurylyov, які переваги дасть використання OpenID Connect? Твітер та Фейсбук дають ясні переваги у вигляді доступу до різноманітної інформації та під них все вже готове.
Дякую за статтю =) тепер все стало на свої місця, що куди та чому.
Іване, дякую за статтю! Порівняння OAuth від Facebook із машиною із забутим паспортом відразу все розставило по місцях!
Ви про якихось "людей"? Я пишу про спеціалістів (розробників, менеджерів), а не про користувачів, яким про ці технології в принципі і знати не потрібно.
«OpenID – це ваш паспорт»
Тільки через деякий час той же паспорт може виявитися зовсім не вашим, тому що немає можливості отримати будь-яке доменне ім'я назавжди. Достатньо не зуміти вчасно продовжити домен. Достатньо, щоб у якоїсь контори виявилася відповідна торгова марка, щоб домен можна було відібрати. Що примітно, новий власник паспорта зможе вклеїти нову фотографію та претендувати на всі права колишнього власника. Наприклад, зможе продати машину разом із ключами.
Загалом приватній особі надійніше покладатися на великого OpenID-провайдера, ніж сподіватися на «своє» доменне ім'я; «своїх»постійних URI в сучасному інтернеті немає :-(
«OpenID – це ваш паспорт. OAuth - ключі від вашої машини. »
Сформулював. OpenID — спроба побудувати замок із піску: зробити людині постійний ідентифікатор із визначення тимчасового доменного імені. OAuth - це ключі від будинку, в якому немає стін: так склалося, що замість стін зазвичай ширмочка, та й то не своя.
Відповідь на post--really appreciate the info.
great post, дуже чітко розповсюджений відповідність між двома протоколами, які я був зайнятий для.
Аналогія. "Вхід через OAuth" - це ключі від машини, в якій з нагоди виявилися ще й іменні документи власника.
Власне, ваша аналогія і говорить якраз про це.
OpenID є про authentication (т. е., що здійснюється), OAuth є про authorisation (тобто, щоб отримати доступ до функції/data/etc.