1

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

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

4

1 回答 1

1

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

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

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

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

  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 加密使用了一种升温机制。请按照上述三个链接获取更多信息。

于 2021-01-02T11:02:27.657 回答