OAuth 2.0是授权规范,但不用于身份验证。 RFC 6749, 3.1。授权端点 明确说明如下:
授权端点用于与资源所有者交互 并获得授权许可。授权服务器必须首先 验证资源所有者的身份。的方式 授权服务器验证资源所有者(例如,用户名) 和密码登录,会话cookie)是 的 超出了这个范围 规格 强> 。
身份验证处理有关“谁是谁”的信息。授权处理有关“谁授予谁的权限”的信息。授权流程包含身份验证作为其第一步。这是人们常常感到困惑的原因。
有许多库和服务使用OAuth 2.0进行身份验证。它通常被称为“社交登录”,它让人们更加困惑。如果您看到“OAuth身份验证”(而非“OAuth授权”),则它是使用OAuth进行身份验证的解决方案。
OpenID 1.0和OpenID 2.0是旧的身份验证规范。制定规范的人希望人们使用OpenID进行身份验证。但是,有些人开始使用OAuth 2.0进行身份验证(而非授权),OAuth身份验证已迅速普及。
从OpenID的角度来看,基于OAuth的身份验证不够安全,但他们不得不承认人们更喜欢OAuth身份验证。结果,OpenID的人决定定义一个新的规范, 的 OpenID Connect 强> ,在OAuth 2.0之上。
是的,这让人们更加困惑。
的 OAuth 2.0 强> 是一种框架,其中服务的用户可以允许第三方应用程序访问他/她在服务中托管的数据,而不向应用程序透露他/她的凭证(ID和密码)。
的 OpenID Connect 强> 是OAuth 2.0之上的框架,其中第三方应用程序可以获取由服务管理的用户身份信息。
(对不起,这些定义是摘录自 概观 我公司的页面)
的 认证 强> 是确定最终用户的主题(=唯一标识符)的过程。有很多方法可以确定主题。 ID&密码,指纹,虹膜识别等
的 授权 强> 是将主题与请求的权限以及请求权限的客户端应用程序相关联的过程。访问令牌表示关联。