REST - HTTPS是安全的 - 为什么选择OAuth?

时间:2018-06-01 02:52:21

标签: https oauth-2.0

我的应用使用REST调用从服务器获取数据。为了使服务器调用安全,我用Google搜索并发现OAuth是保护REST Web服务的最佳方式。但它也说OAuth应该与HTTPS一起使用。

如果我们使用HTTPS(传输数据是安全的),为什么我们需要实施OAuth?难道不能用HTTPS吗?

2 个答案:

答案 0 :(得分:1)

典型的REST API需要以下功能:

  • 服务器身份验证 - 因此客户端请求者可以验证服务器。这就是浏览器在浏览器窗口中显示锁定并显示证书信息的原因。
  • 客户端身份验证 - 因此服务器可以根据需要对用户进行身份验证和识别以授予和限制访问权限。
  • 加密 - 保护数据免遭窃听。

虽然一些简单的API可能不需要客户端身份验证,但它提供了许多REST API所需的两个好处:

  • 个性化和私有数据:如果用户在系统上拥有帐户并且需要其帐户的权限,而不是其他帐户,则必须进行客户端身份验证
  • 速率限制:即使没有私人数据,服务也可能希望对请求进行差异限制和/或收费,并且需要一种机制来识别用户限制和/或收取访问费用。

典型的REST API可以使用服务器TLS证书支持使用HTTPS / TLS进行服务器身份验证和加密。

HTTPS可以使用TLS客户端证书支持客户端身份验证,但是,这种情况并不常见。一些API(如Visa API)执行此操作,此处将对此进行描述:

OAuth在客户端身份验证中更为常见。 OAuth还支持2脚和3脚模式,后者允许单独的服务执行身份验证。这是启用Google和Facebook提供的登录服务的原因,因此Stack Overflow等网站可以将身份验证委派给Google,然后在验证用户身份后,允许用户访问允许的资源。

答案 1 :(得分:1)

虽然Grokify的回答澄清了一些信息,但我想提到一个缺失的事实。

OAuth基于令牌(例如: - 访问令牌,刷新令牌)。将这些令牌视为等效的用户名/密码。因此,如果这些令牌被盗,它们可用于调用您的API以获取数据。或者可以用于恶意活动,直到它们过期。正如您所知,TLS(HTTPS)保护传输中的数据。因此,当令牌通过这样的安全通道进行传输时,您可以避免令牌被盗。这就是为什么TLS是OAuth的必备条件。 OAuth利用TLS来改善其安全性方面。