gpt4 book ai didi

authentication - 基于 OAuth 和基于 Token 的身份验证有什么区别?

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

我认为 OAuth 基本上是基于 token 的身份验证规范,但大多数时候框架的行为就好像它们之间存在差异。比如如下图Jhipster询问是否使用基于 OAuth 或基于 token 的身份验证。

这两个不是同一个东西吗?由于两者的实现中都包含 token ,所以到底有什么区别?

enter image description here

最佳答案

这是一个很好的问题—— token 和 OAuth 存在很多混淆。

首先,当您提到 OAuth 时,您可能指的是 OAuth2 standard 。这是 OAuth 协议(protocol)的最新版本,也是大多数人在说“OAuth”时专门谈论的内容。

OAuth 协议(protocol)支持多种不同类型的身份验证和授权(准确地说是 4 种)。

其次,OAuth 协议(protocol)通过 token 对用户进行身份验证。这里的想法是这样的:

不要让您的用户在每个请求中将其实际凭据发送到您的服务器(就像使用基本身份验证一样,用户为每个请求将其用户名/密码发送到服务器),而使用 OAuth 您首先交换您的用户“ token ”的凭据,然后根据此“ token ”对用户进行身份验证。

OAuth 的想法是,通过要求用户减少通过网络传递其 secret 凭据的频率,可以减少发生不好的事情。 (无论如何,这就是想法。)

现在, token 发挥作用了:OAuth 规范是围绕 token 的概念构建的,但没有指定 token 是什么。

从最“一般”的意义上来说, token 只是唯一标识用户的字符串。就是这样。

人们意识到了这一点,并制定了创建代币的新标准,称为 JSON Web Token standard 。该标准基本上提供了一组以非常具体的方式创建 token 的规则,这使得 token 通常对您更有用。

JWT 可让您执行以下操作:

  • 对 token 进行加密签名,以便您知道 token 未被用户篡改。
  • 加密 token ,以便无法以纯文本形式读取内容。
  • 以标准方式将 JSON 数据嵌入 token 字符串内。

现在,在大多数情况下:开发社区中的几乎每个人都同意,如果您使用任何类型的 OAuth,那么您使用的 token 应该是 JSON Web token 。

<小时/>

好的!现在我们已经介绍了背景故事,让我回答您的问题。

您在上面所做的选择是您是否要启用完整的 OAuth2 规范进行身份验证/授权(这非常复杂),或者您是否只需要一些基本的“ token 身份验证”。

由于 OAuth 协议(protocol)提供了多种不同的方式来以符合标准的方式进行身份验证,因此它给大多数身份验证系统增加了很多复杂性。

因此,许多框架提供了 OAuth2 密码授予流程的“简化”版本,这本质上是一种简单的方法,其中:

  • 用户将其用户名/密码发送到您的服务器的某个网址(例如/login)。
  • 您的服务器为用户生成 JWT token 。
  • 您的服务器将该 token 返回给用户。
  • 用户将此 token 存储在他们的 Cookie、移动设备或可能的 API 服务器中,并使用它来发出请求。

再次强调:上面的流程不符合 OAuth 标准,但它是一个稍微简单的版本,仍然使用 token 。

这里的要点是 token (JWT) 通常很有用,并且不需要与 OAuth 流程配对。

我意识到这是一面文字墙,但希望它能更深入地回答您的问题 =)

关于authentication - 基于 OAuth 和基于 Token 的身份验证有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34784644/

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