现在做的App和网站共用REST接口,用的是基于Cookie的认证,按照一般约定采用了30分钟的超时设置,浏览器超时后自动跳转到CAS认证,这个对网页端来说很正常,但是对于App, 并不是银行那样的安全性极高的App,30分钟过后再回来,发现又得重新登录一遍,太无法接受了……
为了解决这个问题,App采用了一个不得已的做法,定时ping后台接口……如果定时任务被杀,访问后台接口提示超时的话,再用本地存储的加密用户名和密码做一遍登录,实现表面上用户不用重新登录。
本地存储用户名和密码肯定是不合适的。
App做微信、QQ登录时了解了OAuth2认证,认识到AccessToken可以设置较长时间的有效期,可以存储在本地,过期后刷新Token就好。当时用的是基于友盟的SDK,没有深入了解OAuth2,以为它就是用于向第三方授权时使用。最近打算自己搭一套服务,前后台App都自己实现,重新思考了REST接口的认证问题。
参考了
如何设计好的RESTful API之安全性这里写链接内容
重新学习了OAuth
http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
发现原来OAuth2.0还有四种模式可选 :)
- 授权码模式(authorization code)
- 简化模式(resource owner
- 密码模式(password credentials)
- 客户端模式(client credentials)
适用于第三方的是授权码和简化模式,而对于自己的应用来用使用密码模式即可。
然后纠结了下那注册的问题OAuth管不管?
有个小伙也有这个疑问
不管。认证自己做个表单就好。
这几天再过一下Spring Security 和 OAuth整合~ 太麻烦的话,试试Node吧