我的应用使用REST调用从服务器获取数据。为了使服务器调用安全,我用Google搜索并发现OAuth是保护REST Web服务的最佳方式。但它也说OAuth应该与HTTPS一起使用。
如果我们使用HTTPS(传输数据是安全的),为什么我们需要实施OAuth?难道不能用HTTPS吗?
答案 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来改善其安全性方面。