2013-09-26 101 views
0

我花了最近几个小时阅读关于Oauth2协议。根据我的理解,此协议的主要动机是资源所有者不必与第三方(客户端)应用程序共享其凭据,而只需与资源服务器共享凭据。Oauth2如何保护资源所有者?

在这篇文章中我已经用作Oauth2 RFC定义的角色。但是我没有区分资源服务器和授权服务器。为简单起见,我假定它们是相同的,并将它们称为“资源服务器”。

我可以看到事件的两个不同的链。假定这两种情况都是以资源所有者为开始,目的是让客户访问受保护的资源。由资源服务器提供

案例1,GUI
1.客户端转发资源所有者的资源服务器的登录页面。
2.资源所有者的资源服务器的GUI提供他/她的证书。
3.在成功的资源服务器转发的资源所有者的客户端,并提供用户客户端的令牌。由客户
1.客户提供

案例2,GUI询问资源拥有者提供他/她的凭据,以它自己的GUI。
2.客户端将提供的凭证发送到资源服务器。
3.成功时,客户端获得令牌并访问资源服务器。

我担心的是2的情况下是何等的难将是客户端获取资源服务器上的全部特权,如果它,而不是认证作为客户端,认证为资源拥有者?该RFC状态下为理由,要求使用的,而不是让客户端处理资源所有者凭证的OAuth2:

“第三方应用程序获取对资源 所有者的受保护的资源过于宽泛的访问,使资源拥有者没有任何 能够限制持续时间或访问有限的资源子集。“

的RFC进一步指出:

“第三方应用程序都需要存储资源 所有者以供将来使用凭证,通常在 明文密码。”

这很可能是由客户端的情况下,保存的2

所以......你能假设实现的oauth2客户端(在案例2中)是更安全的,然后一个不?资源服务器是否可以实现机制来防止这些事情发生?

回答

0

你可以假设使用适当的OAuth2实现你的系统比传统的用户名/密码为基础的系统更安全。

案例1明显优于由于没有用户凭证被暴露给客户端。

案例2只有一种可能,很多的OAuth2提供商不支持它。即使是标准的劝阻使用它,它似乎只是作为一个后备时,普通的旧用户/通过基于逻辑仍然必须用于一些奇怪的原因。由于客户端应用程序可能根本不存储您的凭证,因此这种情况仍然稍好一些。指定的凭据可以在创建OAuth请求后立即丢弃,并且只应存储授予的令牌。获得刷新令牌后,无需再次询问您的用户/传递。

注意,从应用程序窃取的标记仍然是一个安全隐患,但小偷不会有完全权限使用您的凭据,将只有您授予应用程序的访问权限。此外,访问令牌到期并且提供者应支持撤销刷新令牌。

0

考虑2种情况:

比方说资源拥有者提供他/她的凭据,客户端和你说的客户端有一些地方保存密码以纯文本形式。

1),但我们可以相信客户端,它不会未经您的许可访问任何信息?
2)如果有人侵入客户端数据库并获得所有可能包含敏感信息(如netbanking密码等)的凭证,那该怎么办?

所以要防止这些安全问题,资源拥有者直接与资源服务器处理,并设置客户端的权限来访问这就是了,更不是有点唯一信息。然后,服务器向客户端发出令牌(如门户通道),并且每当客户端需要一些信息时,它就必须发送令牌。

所以最好不要给客户提供凭据出于安全原因。

相关问题