Oauth 2.0的哪些方需要SSL连接?
答案 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即可。