Laravel Passport vs JWT vs Oauth2 vs Auth0 关于Laravel中API身份验证类型的混淆?

Laravel Passport vs JWT vs Oauth2 vs Auth0 关于Laravel中API身份验证类型的混淆?,laravel,oauth-2.0,jwt,auth0,laravel-passport,Laravel,Oauth 2.0,Jwt,Auth0,Laravel Passport,我目前正在学习如何在Laravel中创建API,我发现自己陷入了这个令人困惑的概念中。经过几天的研究和实践,我终于能够充分理解这些概念,从而制作一个迷你指南。我必须查看许多单独的网页,因此我将尽最大努力解释它们之间的关系。这些概念是什么? 是实现Oauth2和JWT的正式Laravel包 是一种身份验证和授权服务。这是一种API身份验证的“一体式”解决方案。默认情况下,它实现JWT,还可以实现Oauth2 OAuth2是一个授权框架或协议,它使应用程序(您将要构建的应用程序)能够 允许有限访问

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

这些概念是什么?
  • 是实现Oauth2和JWT的正式Laravel包
  • 是一种身份验证和授权服务。这是一种API身份验证的“一体式”解决方案。默认情况下,它实现JWT,还可以实现Oauth2
  • OAuth2是一个授权框架或协议,它使应用程序(您将要构建的应用程序)能够 允许有限访问用户帐户,如Facebook、GitHub等。。。想象一下,您的应用程序变得足够大,可以提供“在此处使用应用程序名称登录”或向其他第三方应用程序提供对您的用户帐户的有限访问权限。使用Oauth2,您可以在其中实现这一点
  • 是一种令牌格式。换句话说,它是如何安排数据来创建令牌的。另一种令牌格式是SWT
换言之:

  • Passport工具->Oauth2和JWT
  • Auth0可以实现->Oauth2或许多其他协议,如LDAP、开放ID等
  • Oauth2可以实现->JWT或其他令牌格式,如SWT
你应该用什么? 对于初学者来说,创建自己的与Laravel兼容的Oauth2实现不仅是疯狂的,而且如果您正在阅读这篇文章,很可能是因为您不知道如何准确地处理所有的Oauth2复杂性Oauth2退出。我们只剩下三个套餐选项,和

在继续之前,请注意,当我提到“JWT”或“普通JWT”时,我指的是软件包。真正的匹配出现在Auth0、Passport和普通JWT之间

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

护照可以与更精致的刀相比。它的创造者知道它将切割什么,并专门为这些任务设计它。换言之,它是专门为拉雷维尔设计的,能够顺利、完美地工作,而不会有太多的铃铛和口哨打扰。不过,不要忘记,从长远来看,您可以在上面实现自己的代码。就像一个漂亮的定制仪表板来管理您的API客户端

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

结论 这取决于您自己,如果您想减少可能向您抛出的所有内容,并更多地停留在API世界中,而不是停留在Laravel(Auth0)中,请缩小到Laravel和Oauth2的重点,以进行第三方身份验证(Passport),或者通过API(JWT)进行基本的安全数据传输。是的。。。您还可以使用其中三个将应用程序链接到您的移动应用程序

就我个人而言,我更喜欢护照,因为:

  • 我喜欢和官方的拉维尔包裹一起工作
  • 除了添加到我的项目中的许多额外路由和表之外,它的性能不会受到影响
  • 如果我从最基本的API身份验证开始,并希望进行扩展,那么就容易多了
  • 使用Laravel软件包的舒适性
说到最后一点,有些人可能会说Auth0社区很小。基本上是这样,但它也有很棒的客户支持人员


关于Passport和Oauth2的教程 Laravel和Oauth2文档对令牌的解释可能有点困难。这是一本书。因为我无法理解教程中的“路线”部分,所以我不推荐教程部分

这是一个应用程序,它还使用PostMan Chrome应用程序进行API调用。对于那些不熟悉这种API的人来说,像PostMan这样的应用程序将使您的工作比使用“curl”Linux/Mac命令容易得多。你可以看完整的系列或只是护照部分。目前我被困在视频4中。这是我的

资源

文章中的许多资源都分布在上面,但我这里也有一些


好帖子!还有一个关键点是,对于大多数登录功能,您将创建一个oauth客户端。如果你想成为一个oauth服务器(如linkedin、github、google),并分发可以用passport完成的令牌,但这与构建一个使用这些服务的简单登录(即oauth客户端)是不同的,坦白说吧。大多数应用程序不需要Laravel Passport。他们对Tymon JWT会很好。他们想要的只是一封无状态的电子邮件和带有刷新令牌的密码身份验证。只为这件事使用拉威尔护照是过火了。如果你有一个类似Facebook的应用程序,可以让用户的客户端通过API访问他们的数据,并且有权限,那么Laravel Passport就有意义了。它涉及三方。用户、客户端和后端。大多数应用程序包含两个部分。用户和后端。我的两分钱。谢谢你的评论。我确实认得这辆车