【问题标题】:Does an OAuth 2 client really need TLS?OAuth 2 客户端真的需要 TLS 吗?
【发布时间】:2012-01-12 19:13:14
【问题描述】:

我打算为现有应用构建委托登录系统。我将同时实现 OAuth 客户端(在 Web 应用程序中)和 OAuth 服务器(一个简单的授权和资源服务器,目前实际上只有一个“用户”资源。)

考虑到这一点,我在当前的OAuth 2 draft(第 22 版)中遇到了以下部分:

3.1.2.1.  Endpoint Request Confidentiality

   If a redirection request will result in the transmission of an
   authorization code or access token over an open network (between the
   resource owner's user-agent and the client), the client SHOULD
   require the use of a transport-layer security mechanism.

   Lack of transport-layer security can have a severe impact on the
   security of the client and the protected resources it is authorized
   to access.  The use of transport-layer security is particularly
   critical when the authorization process is used as a form of
   delegated end-user authentication by the client (e.g. third-party
   sign-in service).

这特别警告我应该在客户端上使用 TLS。当然,我们在服务器上使用 HTTPS,但在所有客户端上启用 HTTPS 将很困难,如果不是不可能的话。

根据我对安全性的有限理解,我想有人可能会窃取授权。这让我想到了我的问题:

不会进行客户端身份验证(使用客户端密码)防止窃听者使用授权授予?(因为恶意方不会知道客户端密码,希望。)

如果没有,或者如果这里我没有看到另一个攻击媒介,我可以做些什么来确保在客户端上没有 HTTPS 的情况下安全地工作?例如,OAuth 1 会有所帮助吗? (也许是因为它有额外的请求令牌步骤。)

P.S.:我正计划使用 TLS 客户端证书而不是秘密进行客户端身份验证,如果这会使情况变得更好的话。

【问题讨论】:

    标签: security oauth https oauth-2.0 ssl


    【解决方案1】:

    我认为您误解了此警告的一部分。此 OAuth 警告正在解决 OWASP A9 违规问题。这就是说,即使您使用的是 OAuth,您仍然需要一个安全的传输层来与客户端进行通信。客户端不需要密钥对进行身份验证,OAuth 是客户端的身份验证形式。但是,浏览器仍然使用存储为 cookie 值的会话 ID 对您的应用程序进行身份验证。担心的是,如果攻击者能够截获这个值,那么他将拥有与受害客户端相同的访问权限。

    【讨论】:

    • 那么,如果我理解正确的话,关注的不是授权码是明文发送的,而是资源是明文从客户端发送到浏览器的? (比如说,资源服务器试图在客户端-服务器连接上使用 TLS 保持私有数据的私密性,但随后客户端通过在浏览器-客户端连接上明文传输而违反了这一点。)
    • @Shtééf cookie 是授权码。如果 HTTP 请求以纯文本形式发送,那么任何能够看到此流量的人都必须访问 Web 应用程序。如果您不保护 cookie,那么没有什么是安全的。
    • 我不认为我们在同一页上。通过“授权代码”,我理解规范是指在授予授权后由服务器生成的令牌,服务器将其附加到重定向 URI 中的查询并发送给用户代理。然后客户端在重定向请求中接收到这个,可能是通过普通的 HTTP。 不涉及 cookie,但客户端可能会获取访问令牌并将其绑定到 cookie。我的问题是专门关于授权令牌的。我知道 cookie 可能已被盗用。
    • 点了。我想这只有在没有会话的情况下才是一个好主意,例如客户端上的一次性操作,然后立即丢弃令牌。但是,是的,事实并非如此。
    猜你喜欢
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 2021-03-03
    • 2020-08-16
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    相关资源
    最近更新 更多