通过带有指纹的android密钥库检索用户凭据(用户名和密码)

时间:2016-07-11 16:22:01

标签: android android-keystore android-security android-authenticator android-fingerprint-api

我正在构建一个Android应用程序,我需要使用指纹api通过用户名和密码(在支持的情况下)对用户进行身份验证。

这是我用最简单的术语理解我需要做的事情。

  1. 用户输入用户名和密码后登录 通过后端成功验证,我生成并存储了一个 具有androidkeystore凭据的特定密钥库。

  2. 在下次登录时,如果用户通过a成功进行身份验证 指纹,从中检索凭据(用户名和密码) android keystore并在后端验证用户 那些凭据。

  3. 我跟着:     http://www.techotopia.com/index.php/An_Android_Fingerprint_Authentication_Tutorial

    这提供了一个很好的示例,说明如何使用指纹API通过设备对用户进行身份验证。但是如何获取凭据,以便我可以使用后端验证用户?

    我想做什么的步骤,建议或详细示例?

    感谢。

1 个答案:

答案 0 :(得分:1)

在您建议的解决方案中,每次用户登录时,后端仍会收到用户名+密码。这意味着您的应用必须存储用户的用户名和密码。避免这种情况可能是谨慎的。例如,如果密码稍后更改,您的应用将无法登录。此外,除非您特别小心,否则可以使用adb backup通过USB调试备份和/或提取用户名和密码。

另一种解决方案是客户端生成Android密钥库密钥对,该密钥对在每次使用私钥时都需要用户身份验证(指纹身份验证)。然后,后端提供注册公钥的操作,以便作为用户的帐户进行身份验证。注册操作采用公钥,用户名和密码。如果用户名+密码验证,则为该帐户注册公钥。然后扩展登录操作以支持通过使客户端使用相应的私钥签署后端生成的质询/随机数来验证客户端。如果签名验证,则后端假定这仍然是最初使用用户名+密码注册公钥的客户端。