【问题标题】:How to optimize react-native-keychain performance?如何优化 react-native-keychain 性能?
【发布时间】:2020-08-04 10:04:09
【问题描述】:

我正在构建一个 react-native 应用程序,它使用 react-native-keychain 来安全地保存用户的令牌。我知道钥匙串是用来保存用户名/密码组合的,但我认为保存我的令牌并没有什么坏处。我目前正在实施一些检查机制,将检查是否有可用的有效刷新令牌(意味着最后一个用户在离开应用程序时没有注销,这通常发生在移动应用程序中)并将采取相应措施。这似乎表现不佳(太慢),我得出的结论是,获取应用程序的令牌(Keychain.getGenericPassword())。

问题是:由于钥匙串似乎是本地存储凭据的最安全方式,有没有办法优化其性能,或者是否有同样安全但通常更快的替代方案?

【问题讨论】:

    标签: performance react-native jwt-auth react-native-keychain


    【解决方案1】:

    “react-native-keychain”版本:“6.2.0”

    对于仍在尝试解决此问题的任何人。我遇到了同样的问题,我的延迟大约是 10 秒或更多。在经历了12 这两个问题之后,我能够将它减少到不到一秒钟。我按照this评论中提到的步骤进行操作。

    1. 使用getGenericPasswordsetGenericPassword方法时使用{storage: KeyChain.STORAGE_TYPE.AES}选项

    2. 转到此文件:node_modules\react-native-keychain\android\src\main\java\com\oblador\keychain\KeychainModuleBuilder.java 并将DEFAULT_USE_WARM_UP 设置为false

    3. 转到此文件: node_modules\react-native-keychain\android\src\main\java\com\oblador\keychain\KeychainModule.java 内部方法getGenericPassword 并更改以下内容:更改 这些行

      final String accessControl = getAccessControlOrDefault(options);   
      final boolean useBiometry = getUseBiometry(accessControl);   
      final CipherStorage current = getCipherStorageForCurrentAPILevel(useBiometry);   
      

      // final String accessControl = getAccessControlOrDefault(options);  
      // final boolean useBiometry = getUseBiometry(accessControl);   
      // final CipherStorage current = getCipherStorageForCurrentAPILevel(useBiometry);
      final CipherStorage current = getSelectedStorage(options); 
      

    这个问题似乎是因为 RSA 加密使用了一种升温机制。请点击以上三个链接了解更多信息。

    【讨论】:

    • 感谢您的回答。我将查看您发布的链接,但我不得不说提供的解决方案中的步骤 2 和 3 似乎有点临时。据我所知,对 node_modules 进行更改只会影响我正在开发的本地环境,因为我不应该将该文件夹推送到 github。因此,这些更改不会延续到我同事的构建或发布的应用程序中。
    • 感谢对 Android 10 的帮助,我希望这对其他 Android 也有帮助。从 5 到 10
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    相关资源
    最近更新 更多