You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android应用中使用Cognito实现带生物识别的MFA登录?

需求可行性说明

该需求完全可实现。AWS Cognito支持自定义MFA挑战流程,配合Android官方Biometric API即可完成要求的登录逻辑,且不需要在服务端存储用户原始生物特征数据,符合全球多数地区的隐私合规要求。

具体实现步骤
  • 第一步:Cognito用户池基础配置
    在AWS控制台创建/打开目标Cognito用户池,开启MFA功能,选择「自定义MFA挑战」模式,配置三个Lambda触发器用于自定义挑战的全流程处理,同时在Android项目中引入Cognito依赖:com.amazonaws:aws-android-sdk-cognitoidentityprovider:2.73.0(可替换为最新稳定版本)。
  • 第二步:Android端生物识别能力集成
    引入AndroidX Biometric库依赖,封装生物识别调用逻辑:该库会自动适配当前设备支持的生物识别方式(指纹、人脸、虹膜等),无需单独对接不同厂商的硬件接口,验证过程完全在设备本地完成,系统不会返回原始生物特征数据,验证通过后会生成对应签名用于后续Cognito挑战校验。
  • 第三步:自定义挑战Lambda逻辑开发
    分别实现三个Cognito auth触发器的逻辑:
    1. Define Auth Challenge Lambda:判断用户完成用户名密码校验后,触发生物识别自定义挑战
    2. Create Auth Challenge Lambda:向Android端下发挑战随机串等参数
    3. Verify Auth Challenge Lambda:校验Android端传回的签名是否合法,合法则判定挑战通过
  • 第四步:完整登录流程串接
    1. 用户输入用户名和密码,调用Cognito initiateAuth 接口发起登录请求
    2. Cognito校验用户名密码正确后,返回自定义挑战标识和挑战参数
    3. Android端接收到挑战请求后,调起系统生物识别验证弹窗
    4. 用户生物识别验证通过后,使用本地Keystore存储的私钥对挑战参数签名,调用respondToAuthChallenge接口将签名结果传给Cognito
    5. Cognito侧Lambda校验签名通过后,返回ID Token、Access Token、Refresh Token,登录流程完成
  • 第五步:状态存储处理
    生物识别对应的密钥对仅存储在Android本地Keystore中,禁止上传到任何服务端;Cognito仅需存储用户是否开启生物识别MFA的状态标识,以及挑战校验所需的用户公钥信息即可。
注意事项
  • 所有生物特征运算均在用户设备本地完成,不会有原始生物数据上传到Cognito或其他服务端,不存在数据泄露风险
  • 需要补充降级方案:如果用户设备不支持生物识别、未录入生物特征,可切换为短信验证码、TOTP验证码等其他MFA方式
  • Android端需要申请USE_BIOMETRIC权限,适配Android 10及以上系统的权限要求

内容的提问来源于stack exchange,提问作者Ansol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:45:03