OAuth身份验证客户端安全问题

时间:2015-01-12 12:11:21

标签: security authentication oauth

我了解从提供商的角度尝试使用OAuth进行身份验证的安全问题。但是,我被要求为用户提供使用OAuth登录新网络应用程序的工具,并从Google和Twitter等用户那里获取基本身份信息,客户端应用程序中的新用户帐户将从中创建。此外,对于不希望使用第三方帐户的用户,用户可以通过用户/密码直接登录/登录。

我们不需要访问用户的详细信息/信息或提供商API,只需要在首次登录时获取基本身份,当然也允许他们以后通过提供商登录。不完全是OAuth的用例,OpenId本来是首选,但OAuth已被指定,并且无需担心有效问题。

我的问题是假设用户已经使用相关提供商正确认证了自己是多么安全。如果我相信Google会执行足够的身份验证并获得访问令牌及其身份,那么我可能会认为这是合法用户?如果有人可以访问资源所有者计算机并在浏览器中保存密码,那么显然会出现问题,但是那些选择直接注册的用户会遇到这个问题。

据推测,可以假冒访问令牌,例如:中间假装是谷歌的男人? MITM可以伪造访问令牌并提供与注册用户的谷歌ID匹配的身份详细信息?我没有看到客户知道信息肯定来自提供商的任何信息。显然,这个问题并非OAuth独有。

是否有其他人可以非法访问使用OAuth 验证的帐户。

2 个答案:

答案 0 :(得分:1)

OAuth允许应用 访问 特定用户资源(已获得用户许可)并且无法外出那范围。我没有看到涉及使用基于OAuth的应用程序创建新用户的文档。

话虽如此:

  

我们不要求访问用户的详细信息/信息或提供商   API,只是他们第一次登录时的基本身份

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

  

我的问题是假设用户是否正确是多么安全   与相关提供商进行身份验证。

这一切都取决于服务提供商本身。要符合OAuth协议,其中一项要求是必须在具有数字证书的安全传输层中进行用户身份验证(对于HTTP,必须在HTTPS中完成)。 OAuth使用者没有任何对身份验证过程的引用。此外,身份验证过程基本上询问用户消费者是否可以访问特定用户的资源(而不是其他任何人,因为他没有授权)。

  

是否可以伪造访问令牌,例如在中间的人   假装是谷歌?

欺骗服务提供商 IS 可能,但这将是乏味的。首先,您必须创建一个完整的OAuth握手过程,创建完全 API作为服务提供商,同时设置一个受保护的环境(如OAuth推荐的那样)。欺骗服务提供商唯一可以获得的是客户端凭证。如果它具有用户凭据,则无需使用该应用程序,因为无法使用应用程序提供用户凭据进行恶意破坏。

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

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

答案 1 :(得分:0)

悲伤地说,你最后一句话的情节是事实。

但你应该意识到安全性是一个巨大而复杂的问题,尤其是在客户端。它不仅仅发生在一个点上,而是通过整个互联网访问生命周期的许多点。您提供的方案不是OAuth尝试解决的问题。