2015-01-12 58 views
0

我理解尝试从提供者的角度使用OAuth进行身份验证的安全问题。然而,我被要求为用户提供使用OAuth登录到新Web应用程序的功能,并从Google和Twitter等用户中获取他们的基本身份信息,从中创建客户端应用程序中的新用户帐户。此外,用户可以通过用户/密码直接注册/登录,以便任何不想使用第三方帐户的人使用。OAuth身份验证客户端安全问题

我们不需要任何访问用户的详细信息/提供者API,只是他们初次登录时的基本身份,当然也不允许他们在将来通过提供者登录。并不完全是OAuth的用例,OpenId将是首选,但OAuth已被指定,并且不需要有效的关注。

我的问题是,它是多么安全,它假设用户已正确认证自己与相关的供应商。如果我相信Google说要执行足够的身份验证,并且我获得了访问令牌和他们的身份,那么推测我可以认为这是合法用户?如果有人能够访问资源所有者机器并在浏览器中保存密码,显然存在问题,但是那些选择直接注册的用户会遇到问题。

假定有可能伪造访问令牌,例如,中间的人假装是谷歌? MITM可以伪造访问令牌并提供与注册用户的Google ID匹配的身份详细信息?我没有看到任何客户知道这些信息绝对来自提供者。很明显,这个问题并不是OAuth独有的。

有没有另一种方式有人可以非法访问一个使用OAuth的帐户验证自己。

+0

首先,接入令牌是特定于应用程序和** **不最终用户。要获取访问令牌,应用程序必须注册到服务提供商。其次,OAuth对用户身份验证过程没有任何引用**,用户身份验证仅用于允许用户接受应用程序是否可以访问其受保护资源。那么,如果应用程序本身从未被服务提供商注册过,伪造访问令牌的方式是否真的适合? –

+0

很明显,应用程序将被注册。我曾想过,如果有东西可以拦截通信给OAuth提供商,他们可以假装成它们,返回一个随机令牌,然后在请求时提供一个捕获的Google ID。谷歌永远不会联系,应用程序'假设'用户已经去谷歌和身份验证。从我所看到的客户端无法验证来自Google的令牌。 – vickirk

回答

1

OAuth允许的一个应用访问一个特定用户资源(已经由用户提供许可),它不能去那个范围之外。我还没有看到涉及使用基于OAuth的应用程序创建新用户的文档。

话虽这么说:

我们不要求用户的详细信息/资讯或提供 的API,只是他们的时候,他们首先登录

这违反OAuth授权过程基本认同任何访问。服务提供商执行身份验证并提供相关令牌(基于身份验证的成功)。这是为了确保在OAuth身份验证过程中没有第三方身份验证。

我的问题是,它是多么安全,它假设用户已经正确地 认证自己与相关的供应商。

这一切都依赖于服务提供商本身。为了符合OAuth协议,的要求之一是,用户认证必须做在一个安全的传输层与数字证书(HTTP,它必须在HTTPS来完成)。 OAuth消费者没有任何参考认证过程。此外,认证过程基本上询问用户消费者是否可以访问特定用户的资源(而不是任何其他人,因为他没有授权)。

是否有可能伪造的访问令牌,如男子在中间 假装是谷歌?

欺骗服务提供商IS可能,但它会很乏味。首先,你必须创建一个整个的OAuth握手过程,创建确切 API作为服务提供商,还设置是固定的环境中(如OAuth的建议)。欺骗服务提供商唯一可以获得的是客户端凭证。如果它具有其用户凭据,则不需要使用该应用程序,因为没有办法使用应用程序提供用户证书来进行恶意破坏。

其次,访问令牌过期,即使您欺骗并检索访问令牌,原始应用程序所有者也可以要求服务提供者阻止应用程序,并且访问令牌可能无用。

在中间人攻击是不可能的。您将不得不复制服务提供商,因为最终用户将无法区分原始服务提供商和欺骗服务提供商,以便从应用程序和最终用户中捕获所有相关凭据。

+0

“我还没有看到涉及使用基于OAuth的应用程序创建新用户的文档。” - 对不起,我不清楚。第一次用户通过提供者登录时,会提示在客户端应用程序中创建一个新帐户,为此,客户端将向提供者请求资源所有者的身份。 – vickirk

+0

“这违反了OAuth授权流程”,再次不清楚,对不起。我很欣赏客户不提供授权的任何部分,实际上OAuth为此项目指定的原因之一就是我们掌握的信息较少。 – vickirk

+0

谢谢。我是否认为你暗示假设提供者的成功回应意味着用户有效地进行了身份验证是相当安全的?我并不担心任何人试图访问提供者中的资源,只是欺骗我们的应用程序。 – vickirk

0

可悲的说,你最后一句话的情景是真相。

但是你应该认识到安全是一个巨大而复杂的问题,尤其是在客户端。这不仅仅发生在一个点上,而且贯穿整个互联网接入生命周期的许多点。您提供的场景不是OAuth试图解决的问题。

+0

是的,我欣赏安全是一个巨大的问题。一旦使用最佳实践登录后,应用程序将受到各种安全测试。对于OAuth,我*只*真正担心假装成为他们并访问该用户信息的人,这是非常重要的,但他们无法访问任何高价值资源,这些资源通过AD进行保护。 – vickirk