OAuth授权与身份验证

edg*_*hez 74 oauth oauth-2.0

OAuth术语一直困扰着我很长一段时间.OAuth授权是否有人建议或者是身份验证?

如果我错了,请纠正我,但我一直认为授权是允许某人访问资源的行为,但OAuth似乎没有任何实际允许访问给定资源的用户的实现.所有OAuth实现都在谈论为用户提供令牌(已签名且有时加密).然后,每次调用后都会将此令牌传递给后端服务端点,在该端点检查其有效性,同样不是OAuth关注点.

OAuth身份验证(每篇文章都说不是)我要求用户提供凭据,这反过来证明用户应该/不应该有权访问?

因此,似乎OAuth不是授权NOR身份验证,因为这些必须由其他进程执行.那到底是什么?这是一个传递令牌的过程吗?真的没有特别含义的绒毛词吗?

在没有听起来神秘和迷信(幽灵和地精)的情况下很难提出关于这个主题的问题,所以我希望回答这个问题也不是一件简单的事情.输入您自担风险.

Tak*_*aki 131

OAuth是授权规范

OAuth 2.0是授权规范,但不用于身份验证.RFC 6749,3.1 .授权端点明确说明如下:

授权端点用于与资源所有者交互并获得授权授权.授权服务器必须首先验证资源所有者的身份.授权服务器对资源所有者进行身份验证的方式(例如,用户名和密码登录,会话cookie)超出了本规范的范围.


OAuth身份验证?

身份验证处理有关"谁是谁"的信息.授权处理有关"谁授予谁的权限"的信息.授权流程包含身份验证作为其第一步.这是人们常常感到困惑的原因.

有许多库和服务使用OAuth 2.0进行身份验证.它通常被称为"社交登录",它让人们更加困惑.如果您看到"OAuth身份验证"(而非"OAuth授权"),则它是使用OAuth进行身份验证的解决方案.


OpenID Connect

OpenID 1.0和OpenID 2.0是旧的身份验证规范.制定规范的人希望人们使用OpenID进行身份验证.但是,有些人开始使用OAuth 2.0进行身份验证(而非授权),OAuth身份验证已迅速普及.

从OpenID的角度来看,基于OAuth的身份验证不够安全,但他们不得不承认人们更喜欢OAuth身份验证.因此,OpenID的人决定在OAuth 2.0之上定义一个新的规范OpenID Connect.

是的,这让人们更加困惑.


OAuth 2.0和OpenID Connect的一句话定义

OAuth 2.0是一种框架,其中服务的用户可以允许第三方应用程序访问他/她在服务中托管的数据,而不会向应用程序透露他/她的凭据(ID和密码).

在此输入图像描述

OpenID Connect是OAuth 2.0之上的框架,其中第三方应用程序可以获取由服务管理的用户身份信息.

在此输入图像描述

(对不起,这些定义摘自我公司的概述页面)


从实现者的角度定义

身份验证是确定最终用户的主题(=唯一标识符)的过程.有很多方法可以确定主题.ID和密码,指纹,虹膜识别等

授权是将主题与请求的权限以及请求权限的客户端应用程序相关联的过程.访问令牌表示关联.


也可以看看

  1. OAuth和OpenID Connect的全面实施者谈论调查结果
  2. 所有OAuth 2.0流程的图表和电影
  3. 所有OpenID Connect流程的图表
  4. 最简单的OAuth 2.0指南

  • 对于那些想知道为什么*基于OAuth的身份验证不够安全*的人,我假设[这些常见的陷阱是原因](http://oauth.net/articles/authentication/#common-pitfalls). (11认同)
  • 嗯,我在两个图之间看到的唯一区别是,第一个包含“用户数据”,第二个包含“用户身份”,所以是的,这很令人困惑。 (3认同)
  • "授权流程包含身份验证作为其第一步.这是人们常常感到困惑的原因." 金. (2认同)