Разлика между OpenID и OAuth

Колкото и да е странно, объркването относно "OpenID" и "OAuth" е често срещано. Хората ги използват взаимозаменяемо или мислят за OAuth като нещо като нова и подобрена версия на OpenID. Но в действителност това са напълно различни неща. За да има къде да се обърна в такива случаи, пиша публикация.

Тази публикация не е за това коя от тези две думи е „по-добра“, коя „зло“ или коя „мъртва“. Това е само констатация на факти.

Аналогия. OpenID е вашият паспорт: той казва кой сте, но това, което прави, зависи от това къде сте дошли с него. OAuth - ключове за вашата кола: можете да ги използвате, за да управлявате колата си, без дори да знаете името си.

Както Twitter, така и Facebook използват OAuth като детайл за внедряване, но в противен случай нямат нищо общо. Ролите на протокола в този случай изглеждат така:

Аналогия. „Вход чрез OAuth“ - това са ключовете за колата, в които понякога имаше и лични документи на собственика.

Важно е да се разбере, че тъй като удостоверяването се осигурява от патентован API, това не е „OAuth влизане“, а „Twitter/Facebook вход“. На практика това означава, че не можете да напишете обобщена OAuth библиотека за влизане чрез произволна услуга като Twitter и Facebook.

OpenID Connect

Идеята за родово влизане в OAuth може да работи, ако вместо собствения API за удостоверяване, стандартизирате някакъв отворен код. И имаше такъв опит - OpenID Connect. Там основната идея на OpenID - отворено удостоверяване - е отделена от протокола за обмен на ключове, който се приема като OAuth. И свързаните проблеми с механизма за откриване, които OAuth няма, също се решават.

На практика обаче OpenID Connect не се използва никъде. Защо е напълно отделна тема.

Коментари: 18

Наистина не разбирам съдбата на OpenID на фона на Twitter и Facebook, които осигуряват достъп до много по-голям набор от информация за потребителя и неговите връзки.

Е, съдбата е напълно разбираема: той бавно умира. Но тук не засегнах специално това.