开发者学堂课程【Spring Security知识精讲与实战演示(四):案例之刷新token测试】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/733/detail/13093
案例之刷新token测试
一、刷新token测试
刷新token模式,如果要测试刷新token,需要在我们的服务端再添加一个东西。打开服务端配置,将连接数据库查询的Service拿到,在刷新token的时候会验证当前用户是否通过认证,所以需要加上userDetailsService(userService)加上就可以使用刷新token了。如果不加刷新token是用不了的,加上之后要对服务进行重启。
思考?要验证刷新token以上四种方法哪种合适?
除了客户端模式里面没有刷新token之外,其它的三种模式(授权码模式、简化模式、密码模式)都包含刷新token用哪一种都可以,此次选择授权码模式,主要为了学习另外一种情况。
浏览器打开http://localhost:9001/oauth/authorize/response type=code&client id=heima one,地址后面输入two,登录写xiaoming,密码是123。
登录后得到授权码,可以拿过来直接用,如图下图上面的不需要改,下面加上code,然后把授权码复制过去,用户名和密码是选择性的不输入也可以,因为授权码的时候已经登录过了。再测试的时候,也是好使的。
另一种情况。
比如现在原封不动的再请求一次,会发现授权码已经不能用了,在oAuth2的授权码模式中生成的授权码默认只能使用一次,不能重复使用,是为了安全性的考虑,试想如果我们的授权码可以重复使用,因为这个授权码是在浏览器直接暴露的,将来就有可能被别人拿去篡改我们的请求,所以为了安全起见,希望授权码最好只能用一次,oAuth2也是如此设计的,因为它已经失效了,所以只能再来一次。
将网址后面写two,重新生成了一个授权码,将此授权码拿过去只能请求一次,,刷新token,将refresh_token复制过去,其他的都不需要了,grand_type也要写成refresh_token,发送,再来请求就可以了。
刷新token的时候依然要登录客户端,哪一个客户端发的必须要说一声,否则不知道是谁发的,可见生成的token并没有泄露客户端信息,换句话说就是B系统生成的通行令牌中没有记录A的信息,所以需要再次登录否则是没有办法使用的,它生成的token依然有token也有刷新token,继续刷新都是可以的。