Я неоднократно читал, что OpenID лучше для аутентификации, чем OAuth (для авторизации), в том числе несколько других сообщений в SO.
Случай также, кажется, сделан в этой часто цитируемой статье.
Однако я немного не понимаю, почему я должен одобрять OpenID для аутентификации, а также честного поставщика OAuth (например, Twitter или Facebook OAuth 2.0). Другие сообщения SO, которые я прочитал, объясняют разные варианты использования, и я понимаю разницу между тем, что предназначены для протоколов, но они не объясняют, почему нельзя использовать OAuth для аутентификации.
Вот причины, которые я могу придумать, и мои (возможно, ошибочные) репсоны:
- OAuth действительно для авторизации. Аутентификация пользователей с использованием OAuth дает потребителю больше привилегий, чем им нужно.
- Ответ. Это, как правило, верно, но гораздо более ограниченным в случае мелкозернистого OAuth (например, для Facebook), который позволяет мне запрашивать только минимальные разрешения. Фактически, многие сайты, такие как Facebook, предоставляют OAuth, но не OpenID, по-видимому, потому, что они больше заинтересованы в авторизации потребителей, чем аутентификации клиентов. Если я хочу предоставить клиентам больше параметров проверки подлинности, OAuth, похоже, дает это мне.
- Сеансы OAuth, как правило, живут дольше
- Ответ: не имеет значения, если я намерен использовать клиента для аутентификации клиентов; Я сделаю свое собственное управление сеансом и сразу же избавлюсь от токенов OAuth, как только закончу своих пользователей.
Какие преимущества аутентификации предоставляют OpenID по сравнению с использованием широко распространенных поставщиков OAuth для аутентификации?