我正在构建一个安全系统,必须确保发送消息的用户与接收到访问密钥的用户相同。实施例。
用户Bob拥有一个属性uniqueCode
,这对他来说是唯一的,并且可以让他从服务器接收各种信息。
有一个Web服务,它有各种方法可以返回各种敏感数据。当用户首先使用的客户端连接到Web服务时,它通过authenticate方法执行此操作
从客户端到WS的每个后续请求都需要uniqueCode
和密钥。如果该对有效,则请求返回所需信息。如果x分钟没有活动,则密钥无效,客户端要求用户再次登录。
现在我的问题是,如何将密钥存储在服务器上?关键是Java对象,可以序列化。
我的选择
我的想法是正确的,还是我错过了什么?我认为最后一个是最安全的方式,因为如果有人获得对我的系统的访问权限,那么破解数据库会很容易,但是在不知道其他用户密钥的情况下解密文件会非常困难。
谢谢!
答案 0 :(得分:1)
您是否需要保留密钥,以便在服务器重启后可用?
如果是,那么您必须将密钥保存在数据库中,或者保存在文件系统上,或者其他一些适合您的机制上。我会使用数据库 - 这样您就不会依赖文件系统,以防您移动应用程序,更改权限等。
如果不是,为什么不在应用程序中使用Time To Live的缓存?只需使用uniqueCode
作为密钥,使用加密密钥作为值。热门选项是:
HashMap
。