Cem*_*mre 54 authentication oauth access-token oauth-2.0 jwt
我认为OAuth基本上是基于令牌的身份验证规范,但大多数时候框架的行为就像它们之间存在差异一样.例如,如下图所示,Jhipster会询问是使用基于OAuth还是基于令牌的身份验证.
这些不一样吗?究竟有什么区别,因为它们的实现中都包含令牌?
rde*_*ges 135
这是一个很好的问题 - 围绕令牌和OAuth存在很多混淆.
首先,当你提到OAuth时,你可能会提到OAuth2标准.这是OAuth协议的最新版本,也是大多数人在说"OAuth"时专门讨论的内容.
OAuth协议支持几种不同类型的身份验证和授权(准确地说是4).
其次,OAuth协议通过令牌验证用户.这里的想法是这样的:
不是让您的用户在每次请求时将他们的实际凭据发送到您的服务器(就像他们使用Basic Auth一样,用户将每个请求的用户名/密码发送到服务器),使用OAuth,您首先要交换用户凭据'token',然后根据此'令牌'对用户进行身份验证.
OAuth的想法是,通过要求用户通过网络不那么频繁地传递其机密凭证,可以发生更少的坏事.(无论如何,这是个主意.)
现在,这里是令牌发挥作用的地方:OAuth规范是围绕令牌的概念构建的,但是没有指明令牌是什么.
在最"一般"的意义上,令牌只是一个唯一标识用户的字符串.而已.
人们意识到了这一点,并开发了一种创建令牌的新标准,称为JSON Web令牌标准.该标准基本上提供了一组以非常特定的方式创建令牌的规则,这使得令牌对您来说更有用.
JWT让你做的事情如下:
现在,在大多数情况下:开发社区中的每个人都同意,如果您使用任何类型的OAuth,那么您使用的令牌应该是JSON Web令牌.
==========
好!现在我们已经介绍了背景故事,让我回答你的问题.
您在上面做出的选择是您是否要为身份验证/授权启用完整的OAuth2规范(这非常复杂),或者您是否只想要一些基本的"令牌身份验证".
由于OAuth协议提供了多种不同的方式来以STANDARDS COMPLIANT方式进行身份验证,因此它为大多数身份验证系统增加了很多复杂性.
因此,许多框架提供了OAuth2密码授权流程的"愚蠢"版本,这实际上是一种简单的方法,其中:
再说一遍:上面的流程不符合OAuth,但是STILL使用令牌的版本稍微简单一些.
这里的要点是令牌(JWT)通常很有用,并且不需要与OAuth流配对.
我意识到这是一面文字,但希望它更深入地回答你的问题=)
归档时间: |
|
查看次数: |
25801 次 |
最近记录: |