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

Posted

技术标签:

【中文标题】通过带有指纹的 android 密钥库检索用户凭据(用户名和密码)【英文标题】:Retrieving a users credentials (username & password) via a android keystore with fingerprint 【发布时间】:2016-11-13 16:24:11 【问题描述】:

我正在构建一个 android 应用程序,我需要使用指纹 api 通过用户名和密码(在后台)对用户进行身份验证。

这是我最简单的理解我需要做什么。

    在用户输入用户名和密码后登录时, 成功通过后端身份验证,我生成并存储一个 具有这些凭据的特定密钥库到 androidkeystore。

    下次登录时,如果用户通过 指纹,从中检索凭据(用户名和密码) android 密钥库并在后端对用户进行身份验证 这些凭据。

我已关注: http://www.techotopia.com/index.php/An_Android_Fingerprint_Authentication_Tutorial

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

对于我想做的事情,有什么步骤、建议或详细示例吗?

谢谢。

【问题讨论】:

也许这篇文章可以帮到你:sitepoint.com/… 【参考方案1】:

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

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

【讨论】:

以上是关于通过带有指纹的 android 密钥库检索用户凭据(用户名和密码)的主要内容,如果未能解决你的问题,请参考以下文章

从 Google GCP 项目凭据 API 密钥中检索信息

密钥库公钥/私钥

无声安装PFX到Android系统可信CA用户密钥库

如何从 Android Studio 中检索已保存的密钥库密码?

Firebase API 密钥限制不适用于 Android 应用程序包名称和 SHA1 指纹

密钥库证书的 SHA-1 指纹