Laravel Passport 对比 JWT 对比 Oauth2 对比 Auth0

Laravel Passport vs JWT vs Oauth2 vs Auth0

对 Laravel 中的 API 身份验证类型感到困惑?

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

这些概念是什么?

  • Passport是官方Laravel包,实现了Oauth2和JWT。
  • Auth0 is an authentication and authorization service. It is kinda "all in one" solution for API auth. It implements JWT by default and can implement Oauth2 as well as many other protocols.
  • OAuth2 是一个授权框架或协议,它使应用程序(您要构建的应用程序)能够 限制访问 Facebook、GitHub 等用户帐户...想象一下,您的应用程序变得足够大,可以提供“在此处使用应用程序名称登录”或将您的用户帐户的访问权限限制给其他 third-party 应用程序。使用 Oauth2,您可以在 many other things.
  • 中实现此目的
  • JWT 是一种令牌格式。换句话说,就是如何安排数据来创建令牌。另一种令牌格式是 SWT。

换句话说:

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

你应该用什么?

初学者创建自己的与 Laravel 兼容的 Oauth2 实现 不仅 疯狂,而且如果您正在阅读本文因为您不完全了解所有 Oauth2 的复杂性。 Oauth2 out. 我们只需要重新定义三个包选项。 Passporttymondesigns/jwt-authAuth0.

在继续之前,请注意,当我提到 'JWT' 或 'plain JWT' 时,我真正指的是 tymondesigns/jwt-auth 包。真正的匹配出现在 Auth0、Passport 和普通 JWT 之间...

Auth0相对于Passport和JWT来说就是一把瑞士军刀。这把刀是一个多合一的解决方案。它可以自己做很多事情,再加上一些你可能永远不需要的额外功能,而不依赖于 Laravel 或其他框架。为了不延长这个时间,我只想说它可以做你作为 API 初学者所能想象到的任何事情。此外,您将拥有一个开箱即用的非常好的仪表板,它将允许您管理 API 的所有方面。从 third-party 身份验证添加更多可以使用 API.

的应用程序(移动、网络、桌面)

护照可以比作一把更精致的刀。它的创造者知道它将切割什么,并专门为这些任务设计了它。换句话说,它是专为 Laravel 而构建的,可以流畅、完美地工作,而不会有太多花哨的东西。不过,不要忘记在长 运行 中,您可以在其上实现自己的代码。就像一个漂亮的自定义仪表板来管理您的 API 客户。

最后,回到刀的类比,我喜欢将 JWT 与没有任何额外花哨的锋利的 blade 进行比较。它重量轻、功能齐全、安全并且可以正常工作。您获得的好处是您不必担心其他软件包添加的所有额外功能。此外,由于它的灵活性,您可以随心所欲地升级这把刀,如果您需要更重的升级,甚至可以切换到另一个包。

结论

这取决于你,如果你想减少可能扔给你的一切并更多地留在 API 世界而不是 Laravel (Auth0),缩小到 Laravel 和用于第三方身份验证的 Oauth2 (护照) 或通过 [=123= 开箱即用的基本安全数据传输](智威汤逊)。是的...您还可以 link 将您的应用程序与他们三个一起添加到您的移动应用程序。

我个人更喜欢 Passport,因为:

  • 我喜欢使用官方 Laravel 包。
  • 除了添加到我的项目中的许多额外路由和表外,它的性能不会受到影响。
  • 如果我从最基本的 API 身份验证开始并想扩展,那会容易得多。
  • 使用 Laravel 包的舒适感。

还是说最后一点,可能有人会说Auth0社区小。它基本上是,而且它有很棒的客户支持人员。


Passport 和 Oauth2 教程

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

这是一个Good Passport Video Tutorial which also uses the PostMan Chrome app for API calls. For those of you who are new to this API stuff, apps like PostMan will make your work a lot easier than using a "curl" Linux/Mac command. You could watch the complete series or just the Passport part. At the moment I'm stuck on video 4. Here's my Stack Overflow question

资源

文章上面有很多资源,我这里也有一些。