我正在实现一个Android应用程序,该应用程序必须包含用户登录名。为此,我创建了自己的验证器,目的是只登录一次。然后AccountManager可以请求访问令牌,因此应用程序不会直接处理密码。AccountManager存储用户帐户和令牌。
我正在使用JWT(Json Web令牌)在我的REST API中对用户进行身份验证。
我想知道这个流程是否正确,或者在Android中有更好的方法来做到这一点。
以下是我目前使用的流程:
-
用户第一次在登录屏幕中输入用户和密码。
-
我向服务器请求检索存储在Account Manager中的有效令牌(JWT)。
-
随后的请求使用接收到的访问令牌,直到其过期(1小时),以便从API检索内容。
-
代币过期后,可以在发行时间后两周内进行刷新。从这一刻起,需要用户凭据来检索新的令牌。
这个过程是处理令牌和刷新令牌的正确方法吗?这个过程安全吗?还有其他选择吗?
考虑到这个流程不是使用"刷新令牌"来生成新的令牌,而是使用访问令牌,Android帐户管理器的最佳用途是什么?我还应该使用哪些其他工具?是否建议在JWT中使用Oauth2实现来实现"刷新令牌"?
干杯!
我可以看出,您正走在使用JSON Web令牌并复制它的正确道路上。
但您提到的安全性完全是关于加密您检索到的令牌,然后使用您选择的某种加密方法(如AES或RSA)将其保存在Account Manager中(与用户凭据相同),然后在您希望使用时解密。此外,使用服务器生成的带有秘密算法的密钥会杀死任何黑客。
正如你所理解的,每个拥有root访问权限的人都可以拿到保存的凭据数据库并使用它
使用这些技巧将降低使用涉及刷新令牌的Oauth 2.0的需求。
希望它能帮助