对Laravel中的API身份验证类型感到困惑吗?
我目前正在学习如何在Laravel中创建API,并且发现自己陷入了这个令人困惑的概念。经过几天的研究和实践,我终于可以对这些概念有足够的了解,从而可以制作一份小型指南。我不得不研究很多单独的网页,因此我将尽最大努力解释它们之间的关系。
最佳答案
这些概念是什么?
授予对用户帐户(如Facebook,GitHub等)的有限访问权限。想象一下,您的应用程序已经足够大,可以提供“使用APP NAME HERE登录”,或为其他第三方应用程序提供对用户帐户的有限访问权限。使用Oauth2,您可以在many other things中实现这一点。
换一种说法:
你应该用什么?
对于初学者来说,创建自己的与Laravel兼容的Oauth2实现不仅会令感到疯狂,而且如果您正在阅读此书,则可能是因为您不完全了解所有Oauth2的复杂性。 Oauth2退出。 我们要重新定义的是三个软件包选项。 Passport,tymondesigns/jwt-auth和Auth0。
在继续之前,让我注意一下,当我提到“JWT”或“普通JWT”时,我实际上是指tymondesigns/jwt-auth软件包。真正的匹配来自Auth0,Passport和普通JWT之间。
Auth0 与Passport和JWT相比是瑞士军刀。这把刀是一种多合一的解决方案。它可以自己做很多事情,加上一些额外的东西,而这些东西可能不需要依靠Laravel或其他框架就可以了。为了不让它扩展太久,我只想说它可以做您可能想像成的API初学者。另外,您将获得一个非常好的仪表板,可以让您管理API的各个方面。从第三方身份验证添加更多可以使用该API的应用程序(移动,Web,桌面)。
护照可以与更精致的刀相比。它的创建者知道它将剪切什么,并专门为这些任务设计了它。换句话说,它是专为Laravel设计的,可以流畅,完美地工作,而不会打扰任何风吹草动。不过,不要忘记,从长远来看,您可以在其之上实现自己的代码。就像一个不错的自定义仪表板来管理您的API客户端。
最后,回到刀类比,我想将 JWT 与没有任何额外花哨的锐化 Blade 进行比较。它轻巧,实用,安全并能正常工作。您将获得的好处是,您不必担心其他软件包添加的所有其他功能。此外,由于其灵活性,您可以根据需要对其进行升级,如果需要更大的升级,甚至可以切换到另一个软件包。
结论
这取决于您,如果您想减少所有可能扔给您的东西,并在API世界中停留比在Laravel(Auth0)中更多的时间,请缩小到Laravel和Oauth2的重点以进行第三方身份验证(护照),或者通过API(JWT)开箱即用地进行基本安全数据传输。是的...您还可以通过三个应用程序将您的应用程序链接到您的移动应用程序。
我个人更喜欢Passport,因为:
仍然在谈论最后一点,有人可能会说Auth0社区很小。它基本上是,但它也有很棒的客户支持人员。
护照和Oauth2上的教程
Laravel和Oauth2 Docs对 token 的解释可能有些困难。这是一个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。
资源
许多资源都散布在本文的上方,但我在这里也有一些。
关于laravel - Laravel Passport vs JWT vs Oauth2 vs Auth0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47745884/