为什么OAuth区分Web服务器应用程序和基于浏览器的应用程序?

时间:2014-07-28 10:54:55

标签: oauth-2.0

我一直在这里阅读OAuth2:http://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified,在授权部分,它说OAuth根据用例有不同的模式。

提到的两个用例是基于浏览器的应用程序和Web服务器应用程序。 我的第一个问题是Web服务器应用程序和基于浏览器的应用程序之间的区别是什么?我认为Web服务器应用程序是在运行某种HTTP服务器并处理GET / POST请求的服务器上运行的应用程序。这与基于浏览器的应用程序有何不同? 我的第二个问题是为什么OAuth会区分他们两个?

1 个答案:

答案 0 :(得分:5)

这两种模式的不同之处在于请求和处理OAuth交换的实际逻辑位于何处以及OAuth授权服务器和客户端之间交换的复杂性。

对于Web服务器应用程序(授权代码授予),用户通常通过浏览器请求OAuth操作,但它是应用程序的后端(或至少是服务器端),它执行所有重定向并处理/验证来自授权的响应服务器。在基于浏览器的应用程序(隐式授权)中,它是应用程序的前端(通常是在网页中运行的JavaScript),它可以完成所有工作。

这些模式的安全性也各不相同。在第一个OAuth服务器正在验证客户端应用程序(=它确保它知道它向谁发送令牌)。第二种方法旨在尽可能简单(以简化JavaScript中的处理)并且不执行客户端验证。也不允许使用后一种方法发送刷新令牌。后一种方法的另一个安全问题是它有更大的机会将令牌暴露给攻击者(令牌作为URL中的片段发送,而不是交换访问令牌的授权代码)。

您可以在OAuth 2.0 Threat Model and Security Considerations中找到更多详情。

OAuth 2框架包含隐式授权的原因是为某些类别的应用程序提供简化且易于实现的OAuth方法。