在Cordova中安全存储访问令牌

TMi*_*hel 4 sqlite local-storage cordova ionic-framework

编辑: 请参阅我的解决方案的答案

目前正在开发具有Ionic的混合应用程序,其中需要存储身份验证令牌以保持用户登录,并且还保证在App上下文之外无法访问此数据.

当然,有很多解决方案可以完成这项任务,每个解决方案都有不同的优缺点,因此找到适合的技术令我感到困惑(对我而言).

我一直在寻找angular-localForage和其他候选人:


localStorage的

  • 小数据的明显选择.
  • iOS当系统内存不足时,数据会被擦除.

IndexedDB的

WebSQL(SQLite)

  • 显然是小数据和体面支持(WebSQL支持)的一个很好的选择,但它已被弃用.

SQLite的

  • 有相关问题CordovaiOS.

LokiJS

  • 对于这种情况来说看起来有点过分,但绝对是一个强有力的候选人.是否应该注意任何安全问题(因为我在本地读取它会将数据保存到JSON文件中)?

PouchDB + SQLite

  • 好吧,它是一个JS客户端与CouchDB或Couchbase数据库一起工作,它们也可以与SQLite一起工作但是我只需要存储一个令牌..

显然,Android/iOS交叉兼容性的最佳选择应该具有讽刺意味的是WebSQL,但不再开发,我必须保证长期支持.

所以我的问题是:我是否还有其他任何选项可以安全存储访问令牌?如果不这样做,上述哪一项应该是这项任务的最佳选择?

TMi*_*hel 5

在做了一些研究后,我将分享我的结论.

有趣的是,上述候选者都不适合安全存储访问令牌.该方法应该使用Android(共享首选项)和iOS(Keychain)的本机解决方案.

在Ionic的特定情况下,Cordova 的广播插件可用于与Native通信JS,因此您可以访问存储的数据.

  • 谢谢,这篇文章没有它需要的关注.如果你能解释一下如何从Android(共享首选项)和iOS(Keychain)保存和检索数据,那将会很棒.我找不到好的导游! (4认同)