我们新开发的 app 支持 Android/IOS 的面容 /指纹登录(以下只提指纹),目前的做法是,登录后,在本地保存用户的密码,指纹登录时,在指纹验证通过后,读取保存的密码,调用密码登录接口实现登录,这样肯定是不安全的,要改。
我们希望实现以下安全保障:
我们 token 的有效期比较短,用户一天可能要登录几次。想知道招行、工行、云闪付等类似的 app 是怎么做这块的
1
ydatong 2020-05-08 13:30:46 +08:00 via iPhone
iOS 密码保存到 keychain 里面就行了吧
|
2
cloverzrg2 OP @ydatong #1 我是后端程序员,叫我看看这块,iOS 或者 Android 的开发不太懂
|
3
leoskey 2020-05-08 13:45:40 +08:00 1
首次登录,用密码换取 token,用 token 登录。
|
4
xuanbg 2020-05-08 13:53:58 +08:00
面容可以集成第三方验证,后端调用第三方接口获取验证结果。指纹只能客户端保存密码,然后用指纹去获取密码进行普通的用户名 /密码方式登录。
|
5
also24 2020-05-08 14:13:59 +08:00 1
目标 1 - 本地不保存密码:
可以考虑参考 OAuth 2.0 的 Refresh Token 机制,设置一层 Login Token 目标 2 - app 数据复制到其他手机,也不能使用: 这个只能将当前系统环境的参数,或自己生成的类似 UDID 的参数一起传参,并在校验 login token 的时候一并校验。 这招不能防范恶意篡改。 目标 3 - 用户密码修改后,指纹登录失效,需要重新输入密码: 合理规划 Login Token 的吊销机制即可,方案很多。 |
6
cloverzrg2 OP @ydatong #1 Android 看起来可以放在 keystore,https://developer.android.com/reference/java/security/KeyStore
|
7
ydatong 2020-05-08 14:49:03 +08:00 via iPhone
@cloverzrg2 嗯,iOS keychain 也是专门用来保存密码的,app 卸载了再安装也可以获取到
|