如何在 Android 上通过 Cognito 使用生物识别登录?

Posted

技术标签:

【中文标题】如何在 Android 上通过 Cognito 使用生物识别登录?【英文标题】:How can I use biometrics login with Cognito on Android? 【发布时间】:2021-12-24 02:50:57 【问题描述】:

我需要开发一个具有 MFA 身份验证的 android 应用。

要登录,用户需要先输入其用户名和密码,然后输入生物特征数据(指纹、面部或虹膜)以确认其身份。

我想使用 Cognito 之类的东西来存储生物识别登录信息,但老实说,我真的不明白该怎么做。

这可行吗?

如果是这样,怎么做?

【问题讨论】:

【参考方案1】:

简单的答案 - 你不能。

您不能将 Android 系统(或 ios 系统)正在收集的生物特征数据传递到手机外部。

面部/虹膜和指纹都不能以某种可读格式解码并发送到第三方服务。

这就是安卓系统的工作方式。据我所知,iOs 的工作原理是一样的——你无法检索这些数据。此外,您无法更改系统的这种行为(我想只能在非常定制的 Android ROM 中,而且很难实现)

您可以在您的应用程序中使用指纹/虹膜/面部解锁 - 您不会向您的服务器发送任何内容,但您将能够解锁您的应用程序的 UI - 这是目前的一般用例。

好吧,如果完全正确 - 您可以向服务器发送一些内容 - 您可以生成一个密钥并根据生物特征数据对其进行加密,并使用生物特征身份验证将其解密并发送到您想要的任何地方。秘密不会代表实际的生物特征信息,但它是……(cognito 支持自定义身份验证流程 - 也许您甚至可以以某种方式利用这种方法)

长话短说 - here 是关于生物特征身份验证和基于生物特征的加密的官方文档。

Here 是一个代码实验室示例。

Here 是其工作原理的一般示意图。

Here 和 here 是一篇关于该主题的好文章。

【讨论】:

关于自定义身份验证流程 - 它基于类似状态机的逻辑。此外,如果您打算使用例如Amplify,CLI可以为你搭建骨架:docs.amplify.aws/lib/auth/signin_with_custom_flow/q/platform/…

以上是关于如何在 Android 上通过 Cognito 使用生物识别登录?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有授权人的情况下通过 API Gateway 使 AWS Cognito 用户数据可供 Lambda 使用?

如何在 Android 上使用 IAM 或 Cognito Pool 作为身份验证方法而不是 API 密钥

如何在android中获取cognito中的其他用户数据

在 Android 上获取 Cognito 凭证

如何通过 CloudFormation 禁用 Cognito 用户注册?

Amazon Cognito:从浏览器重定向到 Android 应用程序时如何停止出现“redirect_mismatch”错误