Laravel Passport vs JWT vs Oauth2 vs Auth0

时间:2017-12-11 03:03:06

标签: laravel oauth-2.0 jwt auth0 laravel-passport

对Laravel中API身份验证类型的疑惑?

我目前正在学习如何在Laravel中创建一个API,我发现自己陷入了这个令人困惑的概念。经过几天的研究和实践,我终于可以理解这个概念,制作一个迷你指南。我不得不查看很多单独的网页,所以我会尽力解释它们之间的关系。

1 个答案:

答案 0 :(得分:51)

这些概念是什么?

  • Passport是一个官方的Laravel程序包,它实现了Oauth2和JWT。
  • Auth0是一种身份验证和授权服务。它是API auth的“一体化”解决方案。它默认实现JWT,并且可以实现Oauth2和many other protocols
  • OAuth2是一个授权框架或协议,可以启用应用程序(您要构建的应用程序) 允许对Facebook,GitHub等用户帐户进行有限访问...想象一下,您的应用程序变得足够大,可以“在此处使用APP登录”或向其他第三方应用程序提供对用户帐户的有限访问权限。使用Oauth2,您可以在many other things中实现此目的。
  • JWT是一种令牌格式。换句话说,就是如何安排数据来创建令牌。另一种令牌格式是SWT。

换句话说:

  • Passport implements - > Oauth2和JWT。
  • Auth0可以实现 - > Oauth2或许多其他协议,如LDAP,OPEN ID等......
  • Oauth2可以实现 - > JWT或其他令牌格式,如SWT ......

您应该使用什么?

初学者创建与Laravel兼容的Oauth2实现会很疯狂。 Oauth2出局。我们所有的重新考虑是三种包装选择。 Passporttymondesigns/jwt-authAuth0

JWT(tymondesigns / jwt-auth包)可以创建一个电子邮件和密码验证。但是,如果您使用Passport作为基本电子邮件和密码验证,您不必担心“Oauth2实施”会影响您的应用程序的性能(这不是很多)。当所有那些令人生畏的迁移表和路由都是由Passport生成时,差异就会出现,但通过一些练习,您将会理解它们。 Auth0 似乎快速设置,但在某些用例中,它可能过于夸张,除了感觉不到使用社区Laravel包的安全性。

真正的比赛是在Auth0和Passport之间进行的。与护照相比,Auth0是瑞士军刀。您可以直接使用非常好的仪表板,这样您就可以管理API的所有方面。从第三方身份验证添加可以使用该API的更多应用程序(移动,Web,桌面)。护照可以与更精致的刀相比。它专为Laravel而构建,从长远来看,您可以实现自己的漂亮和自定义仪表板来管理您的API客户端。

<强>结论

我认为真正的选择必须在Passport和Auth0之间。如果您想在Laravel中构建API,或者您将更多地进入API世界而不是Laravel,这取决于您。就我而言,我更喜欢Passport而不是Auth0 最后是JWT。原因是:

  • 我喜欢使用官方的Laravel套餐。
  • 除了添加到我的项目中的路线和表格外,它不会受到影响。
  • 如果我从最基本的API身份验证开始并希望扩展,那将会更容易。

还在谈论最后一点,有些人可能会说Auth0社区很小。它基本上是。但它也有很棒的客户支持人员。

Passport和Oauth2教程

Laravel和Oauth2 Docs对令牌的解释可能有点困难。这是一个Good Explanation of Passport's(therefore Oauth2) Different Types of Tokens and Their Use Cases。由于我无法弄清楚教程的“路线”部分,我不推荐教程部分。

这是Good Passport Video Tutorial,它还使用PostMan Chrome应用进行API调用。对于那些不熟悉这种API的人来说,像PostMan这样的应用程序将使您的工作比使用“curl”Linux / Mac命令更容易。您可以观看完整系列或仅观看Passport部分。目前我被困在视频4上。这是我的目前未解决的 Stack Overflow question

<强>资源

许多资源都在文章的上面展开,但我也有一些。