使用 Account Manager 在 Android 中实现 JWT 身份验证
Posted
技术标签:
【中文标题】使用 Account Manager 在 Android 中实现 JWT 身份验证【英文标题】:Implementing JWT authentication in Android using Account Manager 【发布时间】:2016-11-26 04:22:00 【问题描述】:我正在实现一个 android 应用,它必须包含用户登录信息。为此,我创建了自己的身份验证器,目的是只登录一次。然后 AccountManager 可以请求访问令牌,因此应用程序不直接处理密码。 AccountManager 存储用户帐户和令牌。
我正在使用 JWT(Json Web 令牌)在我的 REST API 中对用户进行身份验证。
我想知道这个流程是否正确,或者在 Android 中有更好的方法来做到这一点。
这是我目前使用的流程:
用户第一次在登录界面输入用户名和密码。
我向服务器发出请求以检索存储在客户管理器中的有效令牌 (JWT)。
后续请求使用接收到的访问令牌直到过期(1 小时)从 API 检索内容。
令牌过期后,最多可在颁发时间后两周内刷新。从此刻起,需要用户凭据来检索新令牌。
这个过程是使用令牌并刷新它的正确方法吗?过程安全吗?还有其他选择吗?
考虑到此流程不是使用“刷新令牌”来生成新令牌,而是使用访问令牌,Android 帐户管理器的最佳用法是什么?我应该使用哪些其他工具?是否建议沿 JWT 执行 Oauth2 以实现“刷新令牌”?
干杯!
【问题讨论】:
您找到解决方案了吗? @ezdookie 不,我只是按照我的描述实现了系统 【参考方案1】:我可以告诉你,你在使用 JSON Web Tokens 并复制它的正确道路上。
但是您提到的安全性是关于加密您检索到的令牌,然后使用您选择的某种加密方法(例如 AES)将其保存在帐户管理器中(也与用户凭据相同) 或 RSA,然后在您希望使用时解密。此外,使用服务器生成的密钥和秘密算法会杀死任何黑客。
据您了解,每个具有 root 访问权限的人都可以获取保存的凭据数据库并使用它。
使用这些技巧将降低使用涉及刷新令牌的 Oauth 2.0 的需求。
希望对你有帮助
【讨论】:
以上是关于使用 Account Manager 在 Android 中实现 JWT 身份验证的主要内容,如果未能解决你的问题,请参考以下文章
Android Account Manager 未缓存 authToken
ldap+ldap-account-manager+svn+apache+php做账号管理