Java Spring Boot 2.5 如何进行安全实战?
(一)Spring Security Demo 在之前的WEB架构基本上,可以加入门的starter-security的依赖,入完以后,会提供必要的安全组件,默认的就是security组件,当然也可以替换,两个都可以配置。实现代码如下:
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId> spring-boot-starter-security </artifactId>
</dependency>
...
</dependencies>
(二)WebSecurityConfig 早期的Spring1.x几版本中,需要自己显示去关闭或者开放安全验证,现在的基本上默认是已经启动了。可以直接设置WebSecurityConfig配置文件,注入必要的安全配置规则,比如基于某个内路由规则、针对order订单的身份验证等,甚至加入角色的限制都可以实现,提供了强大的规则。 WebSecurityConfig总结:
- Spring Security的配置类;
(三)Web全站安全验证配置 下面这段代码,是Web全站安全验证配置的例子,针对anyRequest定制时,所有的请求都做身份验证。hasRole表示针对当前的请求访问某个地址,或者所有的请求访问时是否具备某个角色。当然这个角色或者权限的验证,需要定制扩展接口就可以了。比如连数据库或者连缓存,实现角色查询,有校验就可以了。
@ Configuration
@ (SecurityProperties.BASIC_AUTH_ORDER - 10)
public class ApplicationConfigurerAdapter extends
WebSecurityConfiguerAdapter{
@Override
protected void configure( http) throws
{
http.antMatcher("/admin/**")
.authorizeRequests()
.antMatchers("/admin/users").hasRole(“usersAdmin")
.antMatchers("/admin/orders").hasRole(“ordersAdmin")
.anyRequest().isAuthenticated();
}
}
(四)重新实现验证机制 当然有一般规则,就有特殊规则,允许自定义扩展底层的API实现自定义的判断逻辑,这是良好的安全框架所具备的功能。重新实现验证机制: • WebSecurityConfig安全配置类; • UserDetailsService 接口。
实践案例演示: 这个程序是之前的Web网站,看一下项目的依赖,通过文件依赖可以看出,相比之前的项目,数据库依然存在,还是用之前的spring data jpa,加入MySQL的数据库的链接。
后面稍微注意一下,这里面有个starter security,加完以后,可以看一下左边的依赖包的安全组件,有包括spring security config 、spring security core、spring security web等。
下面看一下,代码具体的配置和实现,新版本默认已经集成,现在最主要的要有Web安全配置,全局配置的时候使用内存验证,实际可以对接数据库、对接缓存。当前程序的进程里面写了用户名“frankxu”,密码“1234qwer”,这种方式并不提倡。
正常情况下,可以定义特殊规则“configuer”,针对rize请求,可以匹配首页,允许首页所有的人都可以访问;针对user,做身份验证。也可以提供表单的登录模式“formLogin()”。做这个例子,是提供这种访问HOME可以不做身份验证的方法,可以直接进入。
查询数据库Get all,演示在浏览器输入“localhost:8081”,启动网址,会发现一个问题,访问一个接口时,比如user查看所有用户,会自动跳转到“login”。当请求一个地址的时候,发现不是可忽略的地址,会自动拦截,跳转到登录界面,这个登录界面是基于表单。 这时会要求输入用户账号和密码,用户账号和密码是定义死的。
为我之已经测试过了,点击登录,“Users/gerAll”就可以访问了,
如上图所示,出现了3个账号和密码,这3个账号全部返回出来了。当然这里还有别的接口,“GetById”
测试一下,输入“GetById/1”,返回ID为1的账号和密码:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。