在RFC 6749的1.1部分中,有四个角色:资源所有者,资源服务器,客户端和授权服务器。
如果客户端和资源所有者是同一个实体,OAuth是否会变得多余或不必要?
例如,我有一个封闭的API和一个面向前方的Web服务器。 (前端Web服务器既是客户端又是资源所有者。)我正在尝试决定是否切换到OAuth 2身份验证而不是使用当前的用户名/密码身份验证方法。如果API仍然对第三方应用程序关闭,是否有任何增加的安全性可以转移到OAuth 2? (也就是说,没有第三方可以访问API。)
谢谢!
答案 0 :(得分:3)
如果资源所有者和客户端/资源服务器角色重合,从安全角度来看OAuth 2.0可能变得不那么相关,因为OAuth的主要目标之一是不将用户的主要凭据暴露给客户端没有实际意义。这也是所谓的资源所有者密码凭证授权被认为是遗留/弃用流程的原因。
但是,出于多种原因,遵循OAuth 2.0模式仍然有意义:
答案 1 :(得分:0)
如果遇到以下问题,则应使用OAuth;
假设您是一个类似Gmail的网络邮件提供商。您的某些用户正在使用第三方应用程序,该应用程序登录到您的用户帐户并自动为您回复某些电子邮件。或者您是像Facebook这样的社交网络网站,其中一些用户使用第三方应用程序分析您的朋友网络并为您打印2D图形。在这种情况下,您的用户将放弃其用户名和密码。他们放弃用户名和密码后,如何阻止某个第三方应用程序访问其帐户?只需更改密码即可。现在您还有另一个问题。其他第三方应用程序将无法访问该用户的帐户。然后,用户必须将其密码重新提供给他信任的其他应用。现在这也是一个问题,因为它不是用户友好的。 OAuth只是您的用户向第三方应用程序开发人员赠送的临时密码。他可以随时取消它,而无需更改自己的密码。
除此之外,不需要OAuth。如果您不打算拥有第三方应用程序开发人员,则只需使用会话cookie。它是存储在用户端的随机字符串。在服务器端,您将拥有任何想要的东西。看看如何在服务器端使用和存储PHP会话。您可以从php.ini中定义它们的寿命并自动刷新时间。