Oauth2客户端应用程序是否需要SSL连接?

时间:2014-09-16 04:33:00

标签: security ssl oauth-2.0

Oauth 2.0的哪些方需要SSL连接?

  • 验证服务器:需要SSL
  • 资源服务器:需要SSL
  • 客户端应用:是否真的有必要,只要它使用SSL进行资源服务器通信?

1 个答案:

答案 0 :(得分:14)

授权服务器需要根据specification使用SSL / TLS,例如:

  

由于对授权端点的请求导致用户      身份验证和明文凭证的传输(在      HTTP响应),授权服务器必须要求使用TLS      在发送请求时,如第1.6节所述      授权端点。

     

由于对令牌端点的请求导致传输      明文凭证(在HTTP请求和响应中),      授权服务器必须要求使用TLS,如中所述      将请求发送到令牌端点时的第1.6节。

同样的规范不会要求它用于客户端应用程序,但强烈推荐它:

  

重定向端点应该如上所述使用TLS      在1.6节中,当请求的响应类型是“代码”或“令牌”时,      或者当重定向请求将导致传输时      开放网络上的敏感凭证。这个规范有      不要求使用TLS,因为在撰写本文时,      要求客户部署TLS对许多人来说是一个重大障碍      客户开发者。如果TLS不可用,则授权服务器      应该在之前警告资源所有者有关不安全端点的信息      重定向(例如,在授权期间显示消息)      请求)。

     

缺乏传输层安全性会对网络造成严重影响      客户端的安全性以及授权的受保护资源      访问。特别是使用传输层安全性      当授权过程被用作一种形式时,这是至关重要的      客户端(例如,第三方)委托最终用户认证      登录服务)。

对资源服务器的调用包含访问令牌并需要SSL / TLS:

  

访问令牌凭据(以及任何机密访问令牌)      在运输和储存过程中必须保密      只在授权服务器,资源服务器之间共享      访问令牌对于访问令牌所属的客户端是有效的      发行。访问令牌凭证必须仅使用TLS传输      如第1.6节所述,服务器身份验证由      [RFC2818]。

原因应该是非常明显的:在任何这些都不使用安全传输的情况下,可以拦截令牌并且解决方案不安全。

您的问题是专门调用客户端应用程序。

  

客户端应用:是否真的有必要,只要它使用SSL进行资源服务器通信?

我假设您的客户端是一个Web应用程序,并且您正在谈论在身份验证发生后浏览器与服务器之间的通信。我还假设您提出问题,因为(在您的实现中),此通信未通过访问令牌进行身份验证,而是通过其他方式进行身份验证。

你有答案:通信以某种方式进行身份验证。服务器怎么知道谁在拨打电话?大多数网站使用他们在会话开始时设置的会话cookie,并使用它来识别会话及其用户。任何能够获取该会话cookie的人都可以劫持会话并冒充用户。如果您不想要(并且您真的不希望这样),则必须使用SSL / TLS来保护浏览器和服务器之间的通信。

在某些情况下,客户端的浏览器部分直接与资源服务器通信;并且服务器部分仅提供静态内容,例如HTML,CSS,图像以及最后但并非最不重要的JavaScript。也许您的客户端是这样构建的,您想知道静态内容是否必须通过SSL / TLS下载?好吧,如果不是,中间的人可以插入自己的邪恶JavaScript,窃取用户的访问权限。您确实希望确保下载静态内容。

最后但同样重要的是,您的问题基于一个隐藏的假设,即可能有正当理由不使用SSL / TLS。通常人们声称证书的成本太高,或者加密需要太多​​的CPU能力,因此需要更多的硬件来运行应用程序。我不认为这些成本几乎在所有情况下都很重要。与构建和运行解决方案的总成本相比,它们非常低。与不使用加密的风险相比,它们也非常低。不要花时间(和金钱)讨论这个问题,只需使用SSL / TLS即可。