开发者学堂课程【Spring Security知识精讲与实战演示(四):案例之授权码模式测试】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/733/detail/13089
案例之授权码模式测试
一、授权码模式测试
在地址栏访问地址:http://localhost:9001/oauth/authorize/response type=code&client id=heima one
授权码模式测试要注意请求路径前面IP地址和端口号是你自己系统的IP地址和端口号,后面的顺序不能改变,因为处理器地址不是我们自己提供的。接下来要在里面加上response type=code这个返回的是授权码的方式,也是不能改变的,client id,这个是根据自己的id,比如现在这里写的是one,如果注册的是two就得改成two, 按理说地址到这就完成了,但如果不是将客户端信息写到了数据库,而是写到了内存,就需要往后面加入认证的ULL地址,具体做法是在后面写上如下字段:
如上图跟上ULL地址,但不建议这么做,如果是保存到数据库了,之前已经配置了客户端服务器如下:
只需给它一个ID,它会自动去数据库将这条数据查询出来,在浏览器打开http://localhost:9001/oauth/authorize/response type=code&client id=heima one
这一步相当于之前讲的A系统要向B系统申请授权码,要将one改成two,因为现在在数据中注册的是two用户,下面页面是认证页面:
因为在主配的文件配置了,需要指定一个认证页面,是没有权限可以访问,如果这一步没有配置就无法跳过,所以一定要配置。
1、中间测试可能出现的环境问题如下:
A系统要访问B系统,它希望用户给与A系统访问B系统的权限,首先用户的有B系统的访问权限,就必须登陆B系统,此时登陆指的是sys_users登录,用户名就应该用sys_users。登录完成后如下界面:
此时B系统会询问用户能否让A系统访问,如果允许访问就选择Approve,不允许就选择Deny,允许才能继续测试,这个界面要想看见后面不能写two,要注意scope,一个是读一个是写,需要哪种选哪种。点了Authorize后才算是授权了,A系统就有操作B系统的权限了,要注意A系统client账号,只能操作一个资源。此时百度不能访问。
此地址不是真正的地址,真正的地址应该是这个回掉给A,K9KmD1为授权码,目前它不能访问B系统,因为授权码不安全,要拿着授权码去B系统申请一个token通行的一个令牌。地址是固定的,需要在地址栏写上oauth/token,必须这么写不能乱写。
传参要注意不能乱填,首先code一定得这么写后面得严格写地址栏得到的code,上面的模式也不能写错,必须写授权码模式,得写authorization code。在实际开发中,刚才的回标地址是访问A系统一个真正可访问的地址,如果这样应该在A系统内部将这个单词直接写死,让用户不要有潜在机会。
client_id为two。指用的第二个来访问,接下来还要写username和password。username是用户名称,
password 写上123。接下来就可以申请通行令牌。
这里面第一个就是获得的token
开始访问资源,来到如下界面直接访问:
因为没有权限是行不通的,要获得权限得在后面加上令牌。
再访问就能成功。到此授权码模式的测试就通过了。
2、总结步骤:
首先在地址栏发出授权码的请求,请求几乎是固定的,如果已经登录了就不会出现登录界面,没有登录则会让你登录,登录界面之后会让你选择是否给予访问权限的界面,给了就能访问,否则不能访问。如果给了之后会跳转然后调出授权码,这地方地址应写A系统中可以将授权码直接转成通行令牌的一个处理器地址。得到通行令牌后,之后访问都要携带通行令牌。用户名和密码可以不写。