使用指纹认证作为 KeyGuard 解锁而不是模式

Use fingerprint auth as KeyGuard unlock instead of a pattern

我想允许用户使用指纹作为登录选项。 我现在发现的是我们可以使用指纹作为身份验证,但问题是它与我的应用程序使用的密码无关,并且在我的应用程序中我需要允许多用户登录。 我想做的是使用 Android Key Store 生成 SecretKey 并需要指纹才能使用它 setUserAuthenticationRequired(true) 然后在第一次加密密码并存储在 Share Preferences 稍后获取它并从 Android 密钥存储和解密问题是 KeyGuardManager 默认情况下只允许模式解锁,我找不到如何使用指纹代替从 Android 密钥存储

中获取 SecretKey

我使用这个库来实现: https://github.com/JesusM/FingerprintManager

我所做的是在第一次成功登录后向用户显示一个对话框,要求他保存指纹,然后我加密他的密码并将其存储在共享首选项中(使用盐)。下次我用指纹解密然后登录

我使用 FingerprintManager.AuthenticationCallback 来确保指纹是正确的,并且只有在该用户使用来自 KeyStore 的密钥之后。 在密钥库中创建密钥时,您可以在最后一次指纹验证后为其有效性设置超时。