指纹唯一 ID

Posted

技术标签:

【中文标题】指纹唯一 ID【英文标题】:Fingerprint Unique ID 【发布时间】:2017-09-07 01:37:20 【问题描述】:

我正在开发一个应用程序,该应用程序要求用户登录(电子邮件/密码),然后才能继续使用该应用程序的其余部分。

我实施了指纹扫描,代码正确验证了指纹是设备授权指纹列表中注册的指纹之一。

我的问题是我希望能够关联这两种情况,例如用户使用电子邮件/密码登录,然后转到一个屏幕,他可以将指纹与他刚刚登录的帐户关联,然后在将来每当他在应用程序上使用指纹登录时,应用程序都会向服务器发送某种表示指纹的唯一密钥,服务器会知道该密钥与该用户的密钥匹配(先前在将指纹与帐户关联时保存) 并返回该用户的信息。

根据我的研究,似乎不可能关联特定指纹,因为它们与设备相关联,但作为设备的身份验证也可以,因为我们假设只有一个用户使用该特定电话,并且即使不同的人可以访问手机,并且他们的指纹已被允许注册,该应用程序也将始终使用同一用户登录。

为了能够实现这种行为,我需要某种唯一不变的密钥来代表用户/指纹。可能吗? 当收到 onAuthenticationSucceeded 的响应时,我可以从 AuthenticationResult 中检索该信息吗?

提前致谢。

【问题讨论】:

Understanding android Fingerprint API authenticate() in depth的可能重复 您找到解决问题的方法了吗?我面临类似的问题搜索一切阅读一切仍然没有得到任何适当的解决方案请帮助。 @ZarSaeed ,不,我还没有找到任何解决方案,因为 afaik 设计中没有这样的唯一 ID。它并不意味着存在,指纹功能应该在不知道指纹属于哪个用户的情况下工作,它所关心的是,该指纹已由设备授权执行该操作。 希望 api 在以后的版本中提供解决方案。 【参考方案1】:

下面的方法可以区分指纹。使用它需要您自担风险,因为未来的更新可能不支持此解决方案。

/**
   * Obtain the Fingerprint associated with this operation. Applications are strongly
   * discouraged from associating specific fingers with specific applications or operations.
   *
   * @hide
   */
  public Fingerprint getFingerprint()  return mFingerprint; 

此方法在 Api 中不公开可用,因此应使用反射访问。

【讨论】:

以上是关于指纹唯一 ID的主要内容,如果未能解决你的问题,请参考以下文章

分布式系统中生成全局ID的总结与思考

如何在 IOS/SWIFT/OBJ-C/CORDOVa 上获取手指 ID(哪个手指用于触摸 ID)或唯一触摸 ID

face++生成的facetoken是唯一的吗

Android--史上最全最完整,获取设备信息获取手机唯一标识

唯一密钥生成逻辑

独特的设备识别