我正在实现一个 Android 应用程序,它必须包含用户登录信息。为此,我创建了自己的身份验证器,目的是仅登录一次。然后 AccountManager 可以请求访问 token ,因此应用程序不直接处理密码。 AccountManager 存储用户帐户和 token 。
我正在使用 JWT(Json Web token )对我的 REST API 中的用户进行身份验证。
我想知道这个流程是否正确,或者是否有更好的方法在 Android 中执行此操作。
这是我目前使用的流程:
用户第一次在登录界面输入用户名和密码。
我向服务器发出请求以检索存储在客户管理器中的有效 token (JWT)。
后续请求使用收到的访问 token ,直到它过期(1 小时)从 API 检索内容。
token 过期后,最多可在颁发时间后两周内刷新。从这一刻起,需要用户凭据来检索新 token 。
这个过程是使用 token 并刷新它的正确方法吗?过程安全吗?还有其他选择吗?
考虑到此流程不是使用“刷新 token ”来生成新 token 而是使用访问 token ,Android 客户管理器的最佳用法是什么?我应该使用哪些其他工具?是否建议沿 JWT 实现 Oauth2 以实现“刷新 token ”?
干杯!
最佳答案
我可以告诉您,您在使用 JSON Web token 并复制它方面走在正确的道路上。
但是您提到的安全性完全是关于加密您检索到的 token ,然后使用您选择的某种加密方法(例如AES)将其保存在客户管理器中(也与用户凭据相同) 或 RSA 然后在你想使用时解密。此外,使用服务器生成的 secret key 和 secret 算法将扼杀任何黑客的机会。
如您所知,每个拥有根访问权限的人都可以访问并使用已保存的凭据数据库。
使用这些技巧将降低使用涉及刷新 token 的 Oauth 2.0 的需要。
希望对你有帮助
关于android - 使用帐户管理器在 Android 中实现 JWT 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38523473/