java - 在设备上存储 JWT 以保持用户登录
问题描述
我正在开发一个安卓银行应用程序,并希望用户即使在应用程序关闭后也能保持登录状态。我想让它尽可能安全的想法是在 JWT 中存储一个唯一的设备 id,然后从令牌中提取 id 并将其与应用程序启动时从设备获取的设备 id 进行比较。
我会将令牌存储在 中SharedPreferences
,但是,我刚刚读到这些设备 id 并不总是唯一的,因为人们正在使用他们的手机。最好的解决方案是什么?如何确定我在启动时验证的令牌已提供给该用户/设备?我不一定需要使用设备 ID,因此欢迎使用任何其他安全选项。
解决方案
我认为在像银行应用程序这样敏感的东西中拥有一个持久的登录会话不是一个好主意,但如果你坚持:
使用SafetyNet Attestation API检查您运行应用程序的设备是否已植根,如果是,则阻止用户进行交互。一旦你这样做了,只需使用常规SharedPreferences
的 withMode.PRIVATE
并且没有人应该能够在你的应用程序之外读取这些数据。
推荐阅读
- node.js - 那么我应该将 .env 文件保存在哪里?
- python - 如何在 C++ 中使用 TF 2.x 的预训练模型
- php - password_verify 适用于 localhost 但不适用于虚拟主机(webhost)
- php - 通过单击批准和拒绝按钮更新列
- sybase-ase15 - Sybase 12.5 与 15.0 客户端连接库:插入 15.7 ASE 时使用 15.0 插入速度慢 10 倍
- linux - Git:git分支名称“?[m”末尾的多余字符是什么?
- tensorflow - How can i convert a tensorflow.js model saved from google's teachablemachine to a keras.hdf5 or tflite model?
- javascript - 为什么可折叠不适用于动态创建的按钮
- java - How foreach works for List of Lists in JSP
- reactjs - custom css style not work in React Bootstrap