我花了最近几个小时阅读关于Oauth2协议。根据我的理解,此协议的主要动机是资源所有者不必与第三方(客户端)应用程序共享其凭据,而只需与资源服务器共享凭据。Oauth2如何保护资源所有者?
在这篇文章中我已经用作Oauth2 RFC定义的角色。但是我没有区分资源服务器和授权服务器。为简单起见,我假定它们是相同的,并将它们称为“资源服务器”。
我可以看到事件的两个不同的链。假定这两种情况都是以资源所有者为开始,目的是让客户访问受保护的资源。由资源服务器提供
案例1,GUI
1.客户端转发资源所有者的资源服务器的登录页面。
2.资源所有者的资源服务器的GUI提供他/她的证书。
3.在成功的资源服务器转发的资源所有者的客户端,并提供用户客户端的令牌。由客户
1.客户提供
案例2,GUI询问资源拥有者提供他/她的凭据,以它自己的GUI。
2.客户端将提供的凭证发送到资源服务器。
3.成功时,客户端获得令牌并访问资源服务器。
我担心的是2的情况下是何等的难将是客户端获取资源服务器上的全部特权,如果它,而不是认证作为客户端,认证为资源拥有者?该RFC状态下为理由,要求使用的,而不是让客户端处理资源所有者凭证的OAuth2:
“第三方应用程序获取对资源 所有者的受保护的资源过于宽泛的访问,使资源拥有者没有任何 能够限制持续时间或访问有限的资源子集。“
的RFC进一步指出:
“第三方应用程序都需要存储资源 所有者以供将来使用凭证,通常在 明文密码。”
这很可能是由客户端的情况下,保存的2
所以......你能假设实现的oauth2客户端(在案例2中)是更安全的,然后一个不?资源服务器是否可以实现机制来防止这些事情发生?