我有两个关于OAuth2的用户代理流程的问题。 (OAuth2的用户代理流程的当前RFC草案在这里: http://tools.ietf.org/html/draft-ietf-oauth-v2-11#section-2.2)
1)
步骤C:必须在片段中给出访问令牌,因为只有用户代理(浏览器)才能访问它。 如果它到达服务器端(如果有任何服务器端),为什么会出现这样的问题? 还有简单的解决方法,以便客户端可以将它传递到服务器端(cookie,隐藏字段,......)
2)
我想实现OAuth2用户代理流程,但是使用双腿版本(request_token就足够了,消费者应用程序可以充当他的用户,因此无需在服务提供商处对用户进行身份验证)
我在OAuth2的用户代理流程和双腿版本的组合方面存在一个主要的安全漏洞:
Web浏览器处理所有重定向。这意味着即使服务提供商认为它将用户发送到指定的主机和域,通过调整DNS设置或/ etc / hosts,该主机和域对于用户重定向到他们自己的机器或任何地方都是微不足道的。文件。
让我们看看三条腿和两条腿版本:
使用三条腿OAuth,这不是一个主要问题,因为用户仍需要在服务提供商处进行身份验证。攻击者可能会设置一个通向其计算机的虚假域名,但他仍然需要该用户的凭据。他可以引诱用户访问他的域名,但他必须做出域查找的结果(由用户的用户代理完成),他只能通过访问用户的机器来做(这更难)
但是有两条腿的OAuth: 攻击者可以使用无辜的消费者应用程序的域轻松设置localhost(/ etc / hosts)并获取request_token。用户与此无关。攻击者现在可以代表无辜的消费者应用程序的所有用户拨打电话。 有没有人知道如何确保这个差距?
问候, Chielus