OAuth1.0中的access_token过期时间通常很长,安全性差。于是OAuth2.0推出了refresh_token。
OAuth2.0中,客户端用账户名,密码经过一定方式(比如先请求code),获得ACCESS_TOKEN,expire_in与refresh_token。
然后在expire_in到期的时候,通过refresh_token获得新的access_token,expire_in,与refresh_token。
refresh_token也有过期时间,当refresh_token过期的时候,则需要用户重新授权登录。
注意:
refresh_token只有在用户长期没有请求的情况下才会过期,因为每次请求token都会获得新的值。
那么这里有个风险:基本上,黑客一旦获得用户的access_token与refresh_token,而且用户之后的一段时间都没有更新,或者不再用这个app了,那么黑客就可以一直以用户的身份进行一些访问。
当然,如果用户在别的地方再次通过用户名密码登录的话,则原来的access_token与refresh_token自然失效。
进而想到,为了防止一次泄露,造成一段时间内的账户不安全,app客户端应该在后台自动定时用refresh_token请求新的token值。这样,token及时变更,旧token有效时间减少,安全性也可得到一定的提高。
摘自:
http://blog.csdn.net/dskwe/article/details/50493616
参考文章:
http://blog.csdn.net/wenlei_zhouwl/article/details/7256082
http://www.cnblogs.com/dudu/p/oauth-refresh-token.html