在Android中存储用户令牌[重复]

Posted

技术标签:

【中文标题】在Android中存储用户令牌[重复]【英文标题】:Storing user token in Android [duplicate] 【发布时间】:2018-07-30 06:55:37 【问题描述】:

您好,我目前正在为 android 应用程序构建登录系统(它连接到服务器并检索 Web 令牌),我对此事有多个问题:

在 Android 中本地存储此类令牌的首选方式是什么? 是否有一个库允许我对其进行加密并将其安全地存储在 SharedPrefs 上,而无需单独存储用于加密的 Key 和 Salt? 将令牌从 LoginActivity 发送到 Intent Extra 内的 AnotherActivity 是否安全?

另外一个问题是,将电子邮件/密码组合从 LoginActivity 发送到 LoginViewModel 并最终发送到 DataSource(EndpointInterface 等)是否安全,方法是将它们作为参数传递给此类类的方法。

提前致谢!

【问题讨论】:

【参考方案1】:

SharedPreferences 最适合在本地存储数据。当您的应用程序存在于系统中时,数据将显示,您可以轻松访问整个应用程序。

SharedPreferences mPreferences = context.getSharedPreferences(PREF_NAME,PRIVATE_MODE); mSharedEditor = mPreferences.edit(); 用于保存令牌

mSharedEditor.putString("FCM_TOKEN",fcmToken);
    mSharedEditor.commit();

**获取令牌**

mPreferences.getString("FCM_TOKEN",null)

【讨论】:

【参考方案2】:
    共享首选项非常安全,只能由您的应用或 root 用户访问。 不确定库,但您可以使用一些简单的 ndk 方法来加密/解密数据。它会给你一些额外的安全点 如果你使用明确的意图,它是安全的

附:如果您的应用是银行客户,那么您不应该遵循这个答案

【讨论】:

【参考方案3】:

在这种情况下使用客户经理。

https://developer.android.com/reference/android/accounts/AccountManager.html

您甚至可以跨应用共享您的客户经理,只要它们由相同的密钥库证书签名即可。

【讨论】:

以上是关于在Android中存储用户令牌[重复]的主要内容,如果未能解决你的问题,请参考以下文章

验证存储的Firebase FCM令牌

如何将 FireBase 云消息传递令牌存储在 Android 的 firebase 数据库中?

无法导入私有 gitlab 存储库 [重复]

将访问令牌存储在用户的集合中更好还是分开?

存储用户的 Facebook 访问令牌

在 JWT 令牌中存储用户权限的最佳做法是啥?