gpt4 book ai didi

OAuth 授权与身份验证

转载 作者:行者123 更新时间:2023-12-03 05:18:26 26 4
gpt4 key购买 nike

OAuth 术语已经困扰我很长时间了。是 OAuth 授权(如某些人建议的那样)还是身份验证?

如果我错了,请纠正我,但我一直将授权视为允许某人访问资源的行为,但 OAuth 似乎没有任何实际允许用户访问给定资源的实现。所有 OAuth 实现讨论的都是向用户提供 token (签名,有时加密)。然后,每次调用后端服务端点时都会传递此 token ,并在其中检查其有效性,这又不是 OAuth 问题。

我认为 OAuth 身份验证(每篇文章都说不是)需要用户提供凭据,从而证明用户应该/不应该具有访问权限?

因此,OAuth 似乎既不是授权也不是身份验证,因为这些必须由其他进程执行。那到底是什么?它是一个传递 token 的过程吗?是不是真的没有具体含义的废话?

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

最佳答案

OAuth 是一种授权规范

OAuth 2.0 是一个授权规范,但不是身份验证规范。 RFC 6749,3.1. Authorization Endpoint明确表示如下:

The authorization endpoint is used to interact with the resource ownerand obtain an authorization grant. The authorization server MUST firstverify the identity of the resource owner. The way in which theauthorization server authenticates the resource owner (e.g., usernameand password login, session cookies) is beyond the scope of thisspecification.


OAuth 身份验证?

身份验证处理有关“谁是谁”的信息。授权处理有关“谁向谁授予什么权限”的信息。授权流程包含身份验证作为其第一步。这就是人们经常感到困惑的原因。

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


OpenID 连接

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

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

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


OAuth 2.0 和 OpenID Connect 的一句话定义

<强> OAuth 2.0 是一个框架,服务的用户可以允许第三方应用程序访问他/她在服务中托管的数据,而无需向应用程序透露他/她的凭据(ID 和密码)。

enter image description here

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

enter image description here

(抱歉,这些定义摘 self 公司的 overview 页面)


从实现者的角度进行的定义

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

授权是将主体与请求的权限以及请求权限的客户端应用程序关联起来的过程。访问 token 代表关联。


另请参阅

  1. Full-Scratch Implementor of OAuth and OpenID Connect Talks About Findings
  2. Diagrams And Movies Of All The OAuth 2.0 Flows
  3. Diagrams of All The OpenID Connect Flows
  4. The Simplest Guide To OAuth 2.0

关于OAuth 授权与身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33702826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com