如何设计 APP 的 面容/指纹 登录的安全机制?

2020-05-08 13:19:13 +08:00
 cloverzrg2

我们新开发的 app 支持 Android/IOS 的面容 /指纹登录(以下只提指纹),目前的做法是,登录后,在本地保存用户的密码,指纹登录时,在指纹验证通过后,读取保存的密码,调用密码登录接口实现登录,这样肯定是不安全的,要改。

我们希望实现以下安全保障:

我们 token 的有效期比较短,用户一天可能要登录几次。想知道招行、工行、云闪付等类似的 app 是怎么做这块的

2523 次点击
所在节点    程序员
7 条回复
ydatong
2020-05-08 13:30:46 +08:00
iOS 密码保存到 keychain 里面就行了吧
cloverzrg2
2020-05-08 13:34:40 +08:00
@ydatong #1 我是后端程序员,叫我看看这块,iOS 或者 Android 的开发不太懂
leoskey
2020-05-08 13:45:40 +08:00
首次登录,用密码换取 token,用 token 登录。
xuanbg
2020-05-08 13:53:58 +08:00
面容可以集成第三方验证,后端调用第三方接口获取验证结果。指纹只能客户端保存密码,然后用指纹去获取密码进行普通的用户名 /密码方式登录。
also24
2020-05-08 14:13:59 +08:00
目标 1 - 本地不保存密码:
可以考虑参考 OAuth 2.0 的 Refresh Token 机制,设置一层 Login Token


目标 2 - app 数据复制到其他手机,也不能使用:
这个只能将当前系统环境的参数,或自己生成的类似 UDID 的参数一起传参,并在校验 login token 的时候一并校验。
这招不能防范恶意篡改。

目标 3 - 用户密码修改后,指纹登录失效,需要重新输入密码:
合理规划 Login Token 的吊销机制即可,方案很多。
cloverzrg2
2020-05-08 14:47:11 +08:00
@ydatong #1 Android 看起来可以放在 keystore,https://developer.android.com/reference/java/security/KeyStore
ydatong
2020-05-08 14:49:03 +08:00
@cloverzrg2 嗯,iOS keychain 也是专门用来保存密码的,app 卸载了再安装也可以获取到

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/669616

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX