【问题标题】:How to more secure OAuth2 Request?如何更安全的 OAuth2 请求?
【发布时间】:2018-06-17 04:43:19
【问题描述】:

我正在尝试使用 OAuth2 来保护我的 API 服务。在下面的方案中,向 OAuth 服务器发出电话请求,我在我的 API 服务器和客户端之间使用 SSL 固定,但我不确定它是否可以在中间攻击中通过 main 暴露;

1-) 攻击者可以通过 MIMA 获取 OAuth url,例如攻击 DDOS?

2-) 攻击者能否访问 iOS 上的钥匙串并获取 JWT?

3-) 攻击者可以通过 MIMA 或反向工程师获得证书吗?这样 SSL pinning 就变得不安全了?

【问题讨论】:

  • SSL pinning 降低了受到 MITM 攻击的风险。但是你没有使用 oauth2 和 oauth2 它与 MITM 或 SSL pining 无关,所以试着澄清你的问题。
  • 我改变了我的问题。你能检查一下吗? @pedrofb

标签: api security encryption oauth-2.0 jwt


【解决方案1】:

我正在尝试使用 OAuth2 保护我的 API 服务。

首先,您的方案不符合 OAuth2 流程。见RFC6749

API服务器应该扮演两个角色(理论上不一定是两个服务器)

  • 授权服务器:对客户端进行身份验证并颁发访问令牌
  • 资源服务器:需要提供有效访问令牌的受保护资源

应用不会直接向用户询问用户名/密码。该请求是由授权服务器使用 Web 重定向发出的,因此客户端应用程序永远不会请求用户的凭据。

1-) 攻击者可以通过 MIMA 获取 OAuth url,例如攻击 DDOS?**

Oauth2 URL 可以是公开的。这不是问题

2-) 攻击者能否访问 iOS 上的钥匙串并获取 JWT?

不,它受操作系统保护

3-) 攻击者可以通过 MIMA 或逆向工程师获得证书吗?这样 SSL pinning 就变得不安全了?

固定证书是公开的,通常由证书颁发机构发布。它是客户端在建立 SSL 连接时接受的一组简化的 CA 根证书。攻击者无法出示此 CA 的有效证书,因为他不拥有私钥,因此无法进行 MITM 攻击。


免责声明:Oauth2 主要用于 Web 应用程序。如果您使用本机应用程序,我建议使用 OpenIdConnect,它是 OAuth2 的扩展,以避免密集使用或 Web 重定向

【讨论】:

  • 但是我将把这个系统用于我的应用程序登录页面,而不是用于第 3 方应用程序。我怎么能不直接询问用户名或密码?您能否更详细地解释一下:) 我正在考虑获取用户名+密码并使用密钥对其进行编码并在 Oauth2 服务器中对其进行解码。 @pedrofb
  • 我觉得不需要使用OAuth2?在我的情况下,仅 JWT 看起来就足够了吗?
  • oauth2 适用于向第三方提供服务/API,或者希望根据标准集中对应用程序进行身份验证的情况。看来这不是你的情况,所以更简单的解决方案可能更合适
  • 是否可以通过密钥发送加密的用户名+密码并在服务器上解密并返回JWT如果它是真的然后在客户端检查JWT?
  • 发送加密或明文密码的安全级别是相同的,因为如果 MITM 攻击者捕获它,他可以进行身份​​验证。但是您说您使用的是 SSL pinning,因此该通道已加密并防止 MITM,因此您不需要额外加密
猜你喜欢
  • 2012-07-23
  • 2022-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 2017-09-01
  • 1970-01-01
相关资源
最近更新 更多