【问题标题】:Restricting traffic to server from only my mobile application仅从我的移动应用程序限制到服务器的流量
【发布时间】:2016-11-01 14:28:47
【问题描述】:

我需要保护我的 JAX-RS 资源并且只接受来自授权移动应用程序的请求。这可能吗?如何做到这一点?

我的所有资源都已通过用户身份验证得到保护,这里的目标是减少用户 ID 钓鱼尝试。我知道一种解决方案是将响应错误与无效的用户 ID 保持通用,但应用程序非常大,目前这是不可能的。

我想出的一个想法是使用使用共享密钥签名的 JWT 令牌。然后我可以在服务器上添加一个授权过滤器来检查签名。如果它没有验证,则丢弃该请求。这听起来像是一个可行的选择吗?

我担心的是移动设备上共享密钥的安全性,它会被 root 设备破坏吗?

【问题讨论】:

标签: security mobile jax-rs jwt


【解决方案1】:

使用令牌是首选方式。但密钥不共享。只有服务器可以访问它。该密钥用于生成 JWT 的消息验证码 (MAC)。由于密钥只有服务器知道,所以没有其他人可以生成具有有效签名的 JWT。 Secret 可能是持久化的或应用范围内的。

  • 使用凭据对客户端进行身份验证后,服务器必须向客户端发送签名的 JWT。
  • JWT 必须包含识别客户端和状态的必要信息(如有必要)。
  • 然后客户端将该令牌连同所有其他请求一起发送到标头字段中。
  • 服务器使用密钥验证 JWT 并处理请求。

即使客户端可以更改 JWT 主体,他也无法对其进行验证。这就是使用签名的全部意义所在。

【讨论】:

  • 这不会阻止使用流氓应用程序的人使用有效凭据连接到我的服务器并获得有效令牌。我正在尝试找到一种方法,只允许我的应用程序与我的服务器通信。
  • 为了解决这种情况,您可能必须使用第 3 方服务。这是一个高级overview
猜你喜欢
  • 2015-02-28
  • 2012-12-06
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
  • 1970-01-01
相关资源
最近更新 更多