android - 使用帐户管理器在 Android 中实现 JWT 身份验证

标签 android rest oauth-2.0 jwt accountmanager

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

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

我想知道这个流程是否正确,或者是否有更好的方法在 Android 中执行此操作。

这是我目前使用的流程:

  1. 用户第一次在登录界面输入用户名和密码。

  2. 我向服务器发出请求以检索存储在客户管理器中的有效 token (JWT)。

  3. 后续请求使用收到的访问 token ,直到它过期(1 小时)从 API 检索内容。

  4. 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/

相关文章:

android - 将 Nexus 7 锁定到只有一个 wifi 网络

android - 没有找到 com.djinnius.HelloWorld$CppProxy 的实现

ios - 微软翻译 API-iOS

php - Laravel 护照 oauth/授权错误

android - 应用 Material 主题时按钮的渲染顺序错误

Android HttpResponseCache 不工作 - FileNotFoundException

javascript - 通过 javascript 向 REST API 发送 POST 请求

ios - 带有 Indy 或第三方 Internet 组件的 iOS 上的 Delphi XE2

mysql - 这是在 Rails 上使用 ruby​​ 的合适时机吗?

oauth-2.0 - OAuth 2 如何使用安全 token 防止重放攻击等行为?