PHP REST API基于密码的SSL身份验证的缺点

PHP REST API基于密码的SSL身份验证的缺点,rest,authentication,ssl,oauth,hmac,Rest,Authentication,Ssl,Oauth,Hmac,我已经开发了一个API,我想通过用户身份验证来保护它。我的第一个想法是为每个用户分配一个密钥(密码)和一个客户端id(用户名),它们将随每个请求一起发送到API。然而,我读过许多文章,其中建议使用其他身份验证方案,如OAuth2或使用HMAC哈希。我还不能理解的是,在安全性方面,这些方案相对于HTTPS+密码+用户名的组合有什么好处。我唯一发现的是HTTPS可能会在CPU方面产生更高的成本,但我不相信使用其他身份验证方案会带来什么安全好处 你能不能给我一些反对使用基本加密身份验证的理由,或者换句

我已经开发了一个API,我想通过用户身份验证来保护它。我的第一个想法是为每个用户分配一个密钥(密码)和一个客户端id(用户名),它们将随每个请求一起发送到API。然而,我读过许多文章,其中建议使用其他身份验证方案,如OAuth2或使用HMAC哈希。我还不能理解的是,在安全性方面,这些方案相对于HTTPS+密码+用户名的组合有什么好处。我唯一发现的是HTTPS可能会在CPU方面产生更高的成本,但我不相信使用其他身份验证方案会带来什么安全好处


你能不能给我一些反对使用基本加密身份验证的理由,或者换句话说,为什么我更喜欢HMAC哈希或OAuth

OAuth的要点是允许第三方代表用户使用您的API。它基本上可以确保用户不需要与第三方共享用户名/密码

如果你不打算让第三方网站连接到你的网站,那么有更简单的方法。这实际上取决于您的API是关于什么的,用户如何访问它(网站、移动应用程序等)


在每个请求中发送用户名和密码似乎不是一个好主意,即使是通过HTTPS,因此可能更好的解决方案是使用“/login”函数,该函数在成功时返回令牌。然后可以使用此令牌访问API。优点是您可以在出现问题时使令牌过期。

谢谢Laurent,因此通过HTTPS而不是令牌发送私钥的基本缺点是它不能过期或频繁更改?@Vasilis,是的,我认为它提供了更大的灵活性和更安全性。假设有人可以访问您的笔记本电脑,即使使用HTTPS,他们也可以检查输入和输出的请求,并找到您的用户名和密码(对于某些用户来说,这可能也是其他服务的密码)。有了令牌,泄漏的信息就少了很多,一旦用户注销,它就变得无效(因此令牌不能在不同的计算机上重复使用,这与用户名/密码不同)。