我正在构建一个 Android 应用程序,我需要使用指纹 API 通过用户名和密码(在后台)对用户进行身份验证。
这是我对我需要做的最简单的理解。
用户输入用户名和密码后登录 成功通过后端身份验证,我生成并存储一个 具有 androidkeystore 凭据的特定 keystore 。
下次登录时,如果用户通过 指纹,从中检索凭据(用户名和密码) android keystore 并在后端对用户进行身份验证 这些凭据。
我关注了: http://www.techotopia.com/index.php/An_Android_Fingerprint_Authentication_Tutorial
这是一个很好的示例,说明如何使用指纹 API 对设备的用户进行身份验证。但是我如何取回凭据,以便我可以通过后端对用户进行身份验证?
对于我想做的事情,是否有任何步骤、建议或详细示例?
谢谢。
最佳答案
在您提出的解决方案中,每次用户登录时,后端仍会收到用户名+密码。这意味着您的应用必须存储用户的用户名和密码。避免这种情况可能是谨慎的。例如,如果稍后更改密码,您的应用将无法登录。此外,除非您特别小心,否则用户名和密码可能会使用 adb backup 通过 USB 调试进行备份和/或提取
。
另一种解决方案是让客户端生成一个 Android Keystore key 对,每次使用私钥时都需要用户身份验证(指纹验证)。然后后端提供一个操作来注册一个公钥来验证用户的帐户。注册操作需要一个公钥、用户名和密码。如果用户名+密码验证通过,则公钥已为该帐户注册。然后扩展登录操作以支持通过让客户端使用相应的私钥签署由后端生成的质询/随机数来验证客户端。如果签名验证通过,后端会认为这仍然是最初使用用户名 + 密码注册公钥的同一客户端。
关于android - 通过带有指纹的 android keystore 检索用户凭据(用户名和密码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38311734/