使用Account Manager在Android中实现JWT身份验证



我正在实现一个Android应用程序,该应用程序必须包含用户登录名。为此,我创建了自己的验证器,目的是只登录一次。然后AccountManager可以请求访问令牌,因此应用程序不会直接处理密码。AccountManager存储用户帐户和令牌。

我正在使用JWT(Json Web令牌)在我的REST API中对用户进行身份验证。

我想知道这个流程是否正确,或者在Android中有更好的方法来做到这一点。

以下是我目前使用的流程:

  1. 用户第一次在登录屏幕中输入用户和密码。

  2. 我向服务器请求检索存储在Account Manager中的有效令牌(JWT)。

  3. 随后的请求使用接收到的访问令牌,直到其过期(1小时),以便从API检索内容。

  4. 代币过期后,可以在发行时间后两周内进行刷新。从这一刻起,需要用户凭据来检索新的令牌。

这个过程是处理令牌和刷新令牌的正确方法吗?这个过程安全吗?还有其他选择吗?

考虑到这个流程不是使用"刷新令牌"来生成新的令牌,而是使用访问令牌,Android帐户管理器的最佳用途是什么?我还应该使用哪些其他工具?是否建议在JWT中使用Oauth2实现来实现"刷新令牌"?

干杯!

我可以看出,您正走在使用JSON Web令牌并复制它的正确道路上。

但您提到的安全性完全是关于加密您检索到的令牌,然后使用您选择的某种加密方法(如AESRSA)将其保存在Account Manager中(与用户凭据相同),然后在您希望使用时解密。此外,使用服务器生成的带有秘密算法的密钥会杀死任何黑客。

正如你所理解的,每个拥有root访问权限的人都可以拿到保存的凭据数据库并使用它

使用这些技巧将降低使用涉及刷新令牌的Oauth 2.0的需求。

希望它能帮助

最新更新