我需要保护我的JAX-RS资源,并且只接受来自授权移动应用程序的请求。这可能吗?怎么办呢?
我的所有资源都已通过用户身份验证受到保护,此处的目标是减少用户ID捕获尝试。我知道一个解决方案是使用无效的用户ID通用来保持响应错误,但应用程序非常大,目前这是不可能的。
我提出的一个想法是使用共享秘密签名的JWT令牌。然后我可以在服务器上添加一个Authorization过滤器来检查签名。如果它没有验证,则丢弃该请求。这听起来像是一个可行的选择吗?
我担心的是移动设备上的共享密钥的安全性,是否可以使用root设备进行攻击?
答案 0 :(得分:1)
使用令牌是首选方式。但秘密密钥不共享。只有服务器才能访问它。该密钥用于生成JWT的消息认证码( MAC )。由于秘密密钥仅由服务器知道,因此没有其他人可以生成具有有效签名的JWT。 可以保留秘密或应用范围。
即使客户可以更改JWT正文,他也无法对其进行验证。这就是使用签名的重点。