- iOS系统如何实现app登录类似微信只需登录一次,退出后不需要每次登录?
- 我们先来看看登录流程
登录
- 在app端保存用户名和密码,这种方法被认为是不安全的做法.即使加密也是存在不确定因素.用户名和密码不应该存在于手机端,只应该在用户第一次登录和服务端交互时候传给服务器的时候存在.登录成功之后不应该出现在手机端的disk及cache中,这样才能保证用户名和密码不被盗取.和服务端的交互采用https + ssl pinning + PKI来加强安全性.pps:之所以返回refresh token,是因为access token使用非常频繁,在网络中频繁传输会增大被盗取的可能性,所以有效时长应该较短,refresh token只有在更新access token时才会在网络中传输一次,相对安全,并且存储在手机的disk中也同样需要加密。
- 一般的实现方法是客户端在第一次登录后,服务端会同时返回一个access token和refresh token,access token有失效期相对较短,用于每次和服务端通信的身份校验.refresh token用于access token失效后换取新的access token时的校验,成功后返回新的access token和新的refresh token.
- 一般的app使用两层token就可以解决,但是如果实在追求安全性的话最好还是多套一两层.token最好放在头部.如果使用keychain来存储的话,程序删了重新安装还可以继续用,是直接存在机器里面的.但是有一点不安全的就是.如果手机被越狱以后,keychain是可以被取出来的.
- OAuth 2.0认证流程,感兴趣的同学可以去研究研究.很好的展示了一个安全的认证流程应该是怎么样的.