开发者学堂课程【Spring Security知识精讲与实战演示(四):案例之权限相关测试】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/733/detail/13094
案例之权限相关测试
一、权限相关测试
测试了四种模式加刷新token模式,什么是进行认证,接下来进行权限相关的测试,比如在hemia_two中涉及到访问权限是product_api,那就意味着只能去访问当前OauthSourceConfig资源,因为这个资源下的 ID 是product_api,假如说把下面改了或者把表改了,在后面加一个后缀,导致访问的权限与现有的资源中访问得不一致,那么现在再用two来申请客户端是否能正常访问资源服务?
选择授权码模式,之后直接在网址后面写two,现在得到了一个新的授权码,将用户名和密码栏去掉,grand_type撤销。
直接生成一个 token,token 是可以正常生成的,接下来到访问得地方,直接请求,会发现当前的 token 不能访问,是因为权限不足。
所以说ID至关重要一定要写对,写错就会出现如上情况
如果我们需要一个访问权限应该怎样控制呢?可以去写一些类似于之前config动态控制权限数据,比如可以在下面写上 @EnableGlobaMethodSecurity 如下图。使用内置的动态权限控制方式。之后可以在上面做一个控制,比如希望它的控制权限是@Secured(“ROLE_PRODUCT”)改完之后需要对资源进行一个重启,因为修改了配置类也修改了代码,就必须要重启。
再一次在网址后改成two,现在是有product_api 访问权限的,将 token的授权码做一个替换,再生成一个token,拿到token后复制,再次来访问。会发现这次是权限不足不足以访问。因为设置了访问权限必须有ROLE_PRODUCT 。没有就无法访问,可见只要按这套流程做完,就不仅仅做到了服务间的动态授权,比如B服务可以授予A服务访问它的权限,而且在访问B中的资源的时候也可以做到动态授权,其实oAuth里面很多授权机制与这个是相通的。只要练熟练会。那么在企业开发中使用oAuth2就没有问题了。