对Laravel中的API身份验证类型感到困惑吗?
我目前正在学习如何在Laravel中创建API,并且发现自己陷入了这个令人困惑的概念。经过几天的研究和实践,我终于可以对这些概念有足够的了解,从而可以制作一份小型指南。我不得不研究很多单独的网页,因此我将尽最大努力解释它们之间的关系。

最佳答案

这些概念是什么?

  • Passport是实现Oauth2和JWT的正式Laravel软件包。
  • Auth0是身份验证和授权服务。这是一种用于API身份验证的“多合一”解决方案。它默认情况下实现JWT,并且可以实现Oauth2和many other protocols
  • OAuth2是一种授权框架或协议(protocol),使应用程序(您将要构建的应用程序)能够
    授予对用户帐户(如Facebook,GitHub等)的有限访问权限。想象一下,您的应用程序已经足够大,可以提供“使用APP NAME HERE登录”,或为其他第三方应用程序提供对用户帐户的有限访问权限。使用Oauth2,您可以在many other things中实现这一点。
  • JWT是 token 格式。换句话说,这就是如何排列数据以创建 token 。另一种 token 格式是SWT。

  • 换一种说法:
  • Passport实现-> Oauth2和JWT。
  • Auth0可以实现-> Oauth2或许多其他协议(protocol),例如LDAP,OPEN ID等...
  • Oauth2可以实现-> JWT或其他 token 格式,例如SWT ...

  • 你应该用什么?
    对于初学者来说,创建自己的与Laravel兼容的Oauth2实现不仅会令感到疯狂,而且如果您正在阅读此书,则可能是因为您不完全了解所有Oauth2的复杂性。 Oauth2退出。 我们要重新定义的是三个软件包选项。 Passporttymondesigns/jwt-authAuth0
    在继续之前,让我注意一下,当我提到“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,因为:
  • 我喜欢使用Laravel官方软件包。
  • 除了添加到我的项目中的许多额外路线和表格外,它的性能不会受到影响。
  • 如果我从最基本的API身份验证开始并且想要扩展,那会容易得多。
  • 使用Laravel软件包的舒适性。

  • 仍然在谈论最后一点,有人可能会说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
    资源
    许多资源都散布在本文的上方,但我在这里也有一些。
  • Stack Overflow JWT vs Oauth
  • Auth0 explanation of Oauth2
  • An Introduction to OAuth2
  • OAuth2 Simplified
  • 关于laravel - Laravel Passport vs JWT vs Oauth2 vs Auth0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47745884/

    10-12 17:11