混淆Laravel护照API安全性的工作方式

Pro*_*ver 5 security api laravel laravel-passport

客户端将用户名和密码发送到服务器。

然后,服务器检查此用户是否已通过身份验证。

如果是,则服务器返回客户端的访问令牌。

然后用户可以使用此访问令牌访问受保护的资源...

这样做的好处是,我们不会通过API调用发送用户信息,并且访问令牌不会持续很长时间,因此黑客将无法发现用户身份验证信息(用户名和密码),以及发现,访问令牌的持续时间不足以对其执行任何操作。

这就是我了解Laravel护照API安全性的方式。

这里令人困惑的是,在第一次API调用时,用户必须发送用户名和密码,因此黑客仍然有很大的机会找出用户信息!!!

我知道我的理解有问题,这就是为什么我会感到困惑,任何解释都将不胜感激。

Mar*_*rko 5

必须有一种方法可以向授权服务器证明您的身份,并且一种方法是提供用户名密码。只要使用HTTP,授权服务器和客户端应用程序之间的通信方式完全取决于您。如RFC-6749中所述

该规范旨在与HTTP([RFC2616])一起使用。在除HTTP以外的任何协议上使用OAuth超出了范围。

当然,总是建议尽可能使用HTTPS。仅仅因为文档中提到了HTTP,并不意味着不能使用HTTPS,因为HTTPS只是HTTP的加密版本。

我想提到的另一件事是,您不需要提供用户名密码,例如,可以在几种授予类型中提供,而不是用户名密码,您可以提供Client_idclient_secret,它们在“ 客户端凭据”授予类型中使用。

如果您是这个新手,我相信这一切都会让您感到困惑。总结一下(据我所知)OAuth2的目的是:

  • 将客户端的角色(可以是浏览器,移动设备等)与资源所有者(通常是帐户的所有者)分开。为什么?因为如果没有分隔,则客户端可以访问用户的敏感数据。
  • 想象一下,第一点足够安全以进行通信。但是,如果有人在您进行的会话中得到帮助,会发生什么?他们可以访问所有内容!这就是OAuth引入范围的原因,根据用户提供的访问令牌,该范围取决于用户对访问资源的限制。范围可以读取,写入,共享等-此实现取决于开发人员。因此,如果某人获得了您的访问令牌,那么由于范围的限制,他们只能对资源进行有限的访问。

这些是我的原因之一,而RFC-6749具有更好的解释:

  • 第三方应用程序需要存储资源所有者的凭据以备将来使用,通常是明文形式的密码。
  • 尽管密码固有的安全漏洞,但服务器仍需要支持密码验证。
  • 第三方应用程序对资源所有者的受保护资源获得了过于广泛的访问权限,从而使资源所有者无法限制持续时间或对有限资源子集的访问。
  • 资源所有者不能在不撤消对所有第三方的访问权的情况下撤消对单个第三方的访问权,必须通过更改第三方的密码来撤消访问权。
  • 破坏任何第三方应用程序都会导致破坏最终用户的密码以及该密码保护的所有数据。

要了解有关OAuth2(授权类型和用途)的更多信息,建议您阅读以下内容:

  1. OAuth 2简介
  2. 提及RFC-6749,即使由于技术写作可能很难阅读。

希望我至少澄清了一小部分模糊。

  • 是的,您消除了很多模糊,但请帮助我确定我是否正确理解您。[您可以提供client_id和client_secret来代替用户名和密码],但是黑客仍然可以获取这些数据,如果他获得了这些数据,他可以为他请求访问令牌![因此,如果某人获得了您的访问令牌,由于范围的限制,他们只能有限地访问资源。]但是,如果某人获得了所有者访问令牌,则可能造成真正的损失!!! (2认同)