spring boot 安全关闭服务,结合spring security
来源:互联网 发布:快递 知乎 编辑:程序博客网 时间:2024/05/21 17:18
参考博客文档
Spring Boot的应用启动与关闭
Windows下使用CURL命令
curl 命令使用
spring boot 官方文档
项目中已有spring security 配置的情况下,通过curl命令安全关闭spring boot服务。
pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>
application.properties
#开启actuator的shutdown功能endpoints.shutdown.enabled=true#默认情况下 roles 为ACTUATOR,当以basic验证访问时需要匹配此权限management.security.roles=ADMIN#The application.properties example above will change the endpoint from /{id} to /manage/{id} (e.g. /manage/info).#隐藏默认接口需要,例如使用shutdown时,需要访问/manage/shutdownmanagement.context-path=/manage#设置actuator功能的ip、端口,服务器需要打开相应端口给本项目,否则访问会被拒绝management.port=8081management.address=127.0.0.1#If you don’t want to expose endpoints over HTTP you can set the management port to -1:#若不想通过http暴露,可以将端口设置为-1management.port=-1
security配置类
@Override protected void configure(HttpSecurity http) throws Exception{ http.authorizeRequests().antMatchers("/").permitAll() //安全关闭服务接口,拥有ADMIN权限的用户可以访问该rul .antMatchers("/shutdown").hasRole("ADMIN") // 其他地址的访问均需验证权限(需要登录) .anyRequest().authenticated().and() //开启basic认证,若不添加此项,将不能通过curl的basic方式传递用户信息 .httpBasic() //其他配置省略 }
步骤
- 项目已有用户、权限信息,即security已经配置好
- 向pom.xml中添加依赖
- 向application.properties添加相应配置,其中==endpoints.shutdown.enabled=true,management.security.roles=ADMIN==为必要项(roles是数据库中已有的权限)。程序会按顺序校验curl上的用户是否存在,是否拥有权限访问该url,是否匹配application.properties中设置的权限。任何一项有错,都不能关闭该服务。
- 向security配置中,加入如下配置
- .antMatchers(“/shutdown”).hasRole(“ADMIN”) ,权限为数据库中已有权限,拥有该权限的用户才能关闭服务。
- .httpBasic() 开启basic认证。
测试
==测试系统为windows 10,tomcat 7 ,项目打包为war文件 ,需要下载curl。通过cmd命令行发送相应请求。XXXXXX为项目名。请求格式为curl -u username:password -X POST url:port/XXXXXX/shutdown==
curl下载
账号密码不正确的情况(后台 log 信息 Bad credentials)
C:\Users\Administrator>curl -u hello:123456 -X POST http://127.0.0.1:8080/XXXXXX/shutdown
账号密码正确,但账号不够权限的情况
C:\Users\Administrator>curl -u admin:123456 -X POST http://127.0.0.1:8080/XXXXXX/shutdown
{“timestamp”:1513656721981,”status”:403,”error”:”Forbidden”,”message”:”Access is denied”,”path”:”/XXXXXX/shutdown”}
账号密码正确,且拥有相应权限的情况
C:\Users\Administrator>curl -u lsw:123456 -X POST http://127.0.0.1:8080/XXXXXX/shutdown
{“message”:”Shutting down, bye…”}
总结
curl通过base64加密用户名,密码,相当于明文数据库中的用户信息传输。系统设计时可以在 spring security 上多花点心思,通过限定访问的IP来达到安全效果(.hasIpAddress(“210.210.210.210/24”))。通过http来关闭服务只是一种手段,application.properties中有management.port=-1这一配置,说明可以通过其他协议来实现。
- spring boot 安全关闭服务,结合spring security
- spring boot结合spring security实现注册后自动登录
- spring security spring boot
- Spring Security开发安全的REST服务
- Spring Security开发安全的REST服务
- Spring Boot中使用Spring Security进行安全控制
- Spring Boot如何使用Spring Security进行安全控制
- Spring Boot中使用Spring Security进行安全控制
- Spring Boot中使用Spring Security进行安全控制
- Spring Boot中使用Spring Security进行安全控制
- Spring Boot中使用Spring Security进行安全控制
- Spring Boot中使用Spring Security进行安全控制
- Spring Boot集成JWT&Spring Security进行接口安全认证
- Spring Boot示例 - 4. 使用Spring Boot和Spring Security构建安全的Web应用
- 《Spring Boot极简教程》第16章 Spring Boot安全集成Spring Security
- spring boot security reference
- Spring Boot Security Application
- spring boot security
- 服务器上搭建javaweb环境(jdk+tomcat)
- Ruby on rails初体验(二)
- IT风投
- Windows10下ROS2安装体验
- 如何在Android上发送E-mail
- spring boot 安全关闭服务,结合spring security
- spring-data-redis配置
- 关于js sort()函数
- 2017-总结
- Jackson使用,String与对象互转
- Java虚拟机内存溢出
- JS调用C#的方法
- 简单扑克牌比较游戏ava集合框架实践
- 解决xpath定位,获取某个子节点中的某个孩子节点或者文本