仅从我的移动应用程序限制到服务器的流量

时间:2016-10-21 04:28:08

标签: security mobile jax-rs jwt

我需要保护我的JAX-RS资源,并且只接受来自授权移动应用程序的请求。这可能吗?怎么办呢?

我的所有资源都已通过用户身份验证受到保护,此处的目标是减少用户ID捕获尝试。我知道一个解决方案是使用无效的用户ID通用来保持响应错误,但应用程序非常大,目前这是不可能的。

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

我担心的是移动设备上的共享密钥的安全性,是否可以使用root设备进行攻击?

1 个答案:

答案 0 :(得分:1)

使用令牌是首选方式。但秘密密钥不共享。只有服务器才能访问它。该密钥用于生成JWT的消息认证码( MAC )。由于秘密密钥仅由服务器知道,因此没有其他人可以生成具有有效签名的JWT。 可以保留秘密或应用范围。

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

即使客户可以更改JWT正文,他也无法对其进行验证。这就是使用签名的重点。