开发者学堂课程【Spring Security知识精讲与实战演示(三):分布式整合之资源服务器搭建和测试】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/732/detail/13074
分布式整合之资源服务器搭建和测试
资源服务器搭建和测试
首先创建一个名称为heima_source_product的资源服务
之后导入pom.xml价包和application.yml配置文件
配置文件中priKeyFile: D: lauth key \id key rsa要删除,之前说到:除了中心能拿到私钥,其他都不能拿到私钥。
配置文件内容:
server :
port: 9002
spring:
datasource:
driver-class-name: com. mysql. jdbc.Driver
ur1: jdbc :mysql:lllsecurity_authority
username: root
password: root
mybatis:
type-aliases-package: com itheima. Domain
configuration:
map-underscore-to-came1-case: true
logging:
level:
com itheima: debug
rsa:
key:
pubKeyFile; D: \auth_keylid_key_rsa.pub
拥有一个自定义的配置文件就必须要有一个自定义的解析配置文件的对象。
下面要创建一个package,com.itheima.config,之后将RasKeyProperties工具类拿到com.itheima.config下,可以将里面关于私钥的内容全部删除。
之后将启动类也拿到com.itheima.config下,
改为AuthSourceApplication
内容:package com itheima;
import ...
@SpringBootApplication
@MapperScan("com itheima. mapper"")
@EnableConfigurationProperties(RsaKeyProperties.class)
public class AuthSourceApplication {
public static void main(String[] args){
SpringApplication. run(AuthSourceApplication. class, args);
}
}
下图是所需内容:
WebSecurityConfig
中只需要
import …
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled=true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private RsaKeyProperties prop;
//Spring Security
配置信息
public void configure(HttpSecurity http) throws Exception {
http.csrf() CsrfConfigurer<HttpSecurity>
.disable() HttpSecurity
.authorizeRequests()ExpressionInterceptUrlRegistry
.antMatchers(...antPatterns:"/product").hasAnyRole ...roles:"USBR")
.anyRequest()ExpressionUrlAuthorizationConfigurer<Hittpsed
.authenticated()ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry
.and() HttpSecurity
.addFilter(newJwtLoginFilter(super.authenticationManager(),prop)) HttpSecurity
.addFilter(newJwtVerifyFilter(super.authenticationManager(),prop);
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) ;
}
}
因为@EnableGlobalMethodSecurity(securedEnabled
=true)是一个权限校验的注解,故可以将ProductController copy过来
ProductController
内容:
package com itheima.controller;
import ...
@RestController
CRequestMapp ing("/product")
public class ProductController {
//@Secured("ROLE_PRODUCT")
@RequestMapping(""/findA11")
public String findAl1() { return
"产品列表查询成功!";〕
}
下面进行测试,
注意,9002中也有一个请求,token失效时间是一天,目前token还能使用,如果将http://localhost:9001/product/findAll改为
http://localhost:9002/product/findAll也是可以查询成功的。之后进行另一个测试,将ProductController中的动态授权打开,重新启动9002,如果出现403,证明动态授权依然是可用的。动态授权是否可用取决于校验认证里的use.getAuthorities()参数。继续测试发现结果是“status”:403权限不足
Spring Security整合Spring Boot分布式版认证要加入JWT和rsa,在企业开发中如果不加入这两样,只要能保证token安全也是可以的,但是不推荐这样使用。