繁体   English   中英

Laravel Passport vs JWT vs Oauth2 vs Auth0

[英]Laravel Passport vs JWT vs Oauth2 vs Auth0

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

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

这些是什么概念?

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

换句话说:

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

你应该用什么?

对于初学者来说,创建自己的与 Laravel 兼容的 Oauth2 实现不仅会很疯狂,而且很有可能,如果您正在阅读本文,是因为您不完全了解 Oauth2 的所有复杂性。 Oauth2 出来了。 我们所指的只是三个包装选项。 Passporttymondesigns/jwt-authAuth0

在继续之前,让我注意,当我提到“JWT”或“普通 JWT”时,我真正指的是tymondesigns/jwt-auth包。 真正的匹配发生在 Auth0、Passport 和普通 JWT 之间……

与 Passport 和 JWT 相比, Auth0是一把瑞士军刀。 这把刀是一个多合一的解决方案。 它可以自己做很多事情,加上一些你可能永远不需要的额外功能,而不依赖于 Laravel 或其他框架。 为了不延长它太长,我只想说它可以做任何你可以想象的 API 初学者。 此外,您将拥有一个非常好的开箱即用的仪表板,它允许您管理 API 的所有方面。 从第三方身份验证到添加更多可以使用该 API 的应用程序(移动、网络、桌面)。

护照可以比作一把更精致的刀。 它的创造者知道它将切割什么,并专门为这些任务设计它。 换句话说,它是专门为 Laravel 构建的,它可以顺利和完美地工作,而不会受到许多花里胡哨的困扰。 但是,请不要忘记,从长远来看,您可以在其上实现自己的代码。 就像一个漂亮的自定义仪表板来管理您的 API 客户端。

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

结论

这取决于你,如果你想削减所有可能扔给你的东西并留在 API 世界中而不是在 Laravel (Auth0) 中,缩小到 Laravel 和 Oauth2 的第三方身份验证(Passport)的重点,或者有一个通过 API (JWT) 开箱即用的基本安全数据传输。 是的...您还可以使用其中三个将您的应用程序链接到您的移动应用程序。

我个人更喜欢 Passport 因为:

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

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


Passport 和 Oauth2 教程

Laravel 和 Oauth2 Docs 对令牌的解释可能有点困难。 这是Passport 的(因此是 Oauth2)不同类型的令牌及其用例的一个很好的解释 由于我无法弄清楚教程的“路线”部分,因此我不推荐教程部分。

这是一个很好的 Passport 视频教程,它也使用 PostMan Chrome 应用程序进行 API 调用。 对于那些不熟悉这个 API 的人来说,像 PostMan 这样的应用程序会让你的工作比使用“curl”Linux/Mac 命令容易得多。 您可以观看完整系列或仅观看 Passport 部分。 目前我被困在视频 4 上。这是我的Stack Overflow 问题

资源

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM