OAuth还是JWT?哪一个使用,为什么?

Roh*_*han 27 authentication oauth-2.0 jwt laravel laravel-5

我开始学习基于令牌的身份验证,我正在尝试学习如何在Laravel 5中实现它.我遇到了两种非常流行的技术,但我很困惑,因为我对这两种技术都不熟悉.

Medium的这篇文章说我应该选择lucadegasperi/oauth2-server-laravel,我肯定这是一个非常受欢迎的社区包,根据Github上的明星数量以及引导我的参考数量来判断.这个应该可以帮助我实现OAuth.

Scotch.io上的另一篇文章鼓励我使用tymondesigns/jwt-auth,这也是非常受欢迎的,再次根据Github上的明星数量来判断.

在这一点上,我优先考虑使用哪一个,因为我是一个新手开发人员,我没有与他们中的任何一个合作.

任何人都可以向我指出每个人的利弊是什么以及我应该实施哪一个?我的项目类型是否也决定了我应该使用哪种类型?如何?

此外,如果你正在争论我应该选择另一个,你还能指出可以帮助我从中开始的好资源.除了这两个链接,我当然是自己提供的.

Gra*_*avy 32

JWT是一种简单的身份验证协议,Oauth是一种身份验证框架.

经验丰富的开发人员需要大约一个月的时间才能完全理解并实施Oauth.经验丰富的开发人员可以在阅读规范的大约一天内获取JWT协议.所以基本上,它归结为您的具体用例.

如果你想对api进行简单的无状态http认证,那么即使是初学者,JWT也很好并且实现起来相对较快.

一些JWT资源为您服务:

还有一个Oauth资源:

  • “Oauth 是一个身份验证框架。” 真的吗?它只进行授权,即控制对资源的访问。您必须添加另一种机制来提供身份验证。 (3认同)

sam*_*j90 13

JWT代表JSON Web Token,因为它的名称表明它只是在两方之间传输安全数据的标记,即客户端和服务器.

另一方面的Oauth2是一组规则或程序,通常称为框架,有助于验证和授权双方传输安全数据.

下图将解释oauth2的工作原理

授权代码流程

以下是图中步骤的更详细说明:

  1. 应用程序请求授权以从用户访问服务资源
  2. 如果用户授权请求,则应用程序接收授权授权
  3. 应用程序通过提供其自身身份的身份验证和授权授权来请求来自授权服务器(API)的访问令牌
  4. 如果应用程序标识已通过身份验证且授权授予有效,则授权服务器(API)会向应用程序发出访问令牌.授权完成.
  5. 应用程序从资源服务器(API)请求资源并提供访问令牌以进行身份​​验证
  6. 如果访问令牌有效,则资源服务器(API)将资源提供给应用程序

这两者可以一起用于传输安全数据.

JWT在oauth2的第6步中发挥作用

  • JWT 和 OAuth2 完全不同,服务于不同的目的,但它们是兼容的,可以一起使用,当然,它们是可分离的。 (2认同)

vaq*_*han 8

JSON Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且独立的方式,用于在各方之间作为JSON对象安全地传输信息.此信息可以通过数字签名进行验证和信任.JWT可以使用秘密(使用HMAC算法)或使用RSA的公钥/私钥对进行签名.

OAuth 2.0是授权协议.OAuth 2.0取代了2006年创建的原始OAuth协议所做的工作.OAuth 2.0专注于客户端开发人员的简单性,同时为Web应用程序,桌面应用程序,移动电话和客厅设备提供特定的授权流程.该规范正在IETF OAuth WG中开发.

- OAuth我们有不同类型的令牌.

1)WS-Security令牌,尤其是SAML令牌

2)JWT代币

3)遗产代币

4)自定义令牌

比较JWT和OAuth2时最重要的一点是,它们并不相同.甚至是不相容的.

JWT是一种身份验证协议. 这意味着它是一组严格的指令,用于签发和验证签名访问令牌.令牌包含应用程序用于限制对用户的访问权限的声明.

**OAuth2是一个授权框架**OAuth2另一方面是一个框架,思考非常详细的指南,用于让用户和应用程序在私有和公共设置中授权其他应用程序的特定权限.

几个好的链接:

  • OAuth2 不是身份验证协议。它是一个授权协议/框架。 (2认同)