spring boot 2.0之安全

简介: 简介 如果在classpath上设置了spring 安全,默认的话其web 也是安全的。springboot依赖于spring 的安全声明策略决定是使用httpBasic 或者 formLogin,添加web应用的安全等级方法,可以使用@EnableGlobalMethodSecurity 添加你想要的配置。

简介

如果在classpath上设置了spring 安全,默认的话其web 也是安全的。springboot依赖于spring 的安全声明策略决定是使用httpBasic 或者 formLogin,添加web应用的安全等级方法,可以使用@EnableGlobalMethodSecurity 添加你想要的配置。

默认的认证管理是拥有一个单独的用户。如下所示:

Using generated security password: 78fa095d-3f4c-48b1-ad50-e24c31d5cf35
可以通过提供 spring.security.user.name  与 spring.security.user.password 改变其用户和密码。

默认的安全配置是通过SecurityAutoConfiguration 实现(同时也包括非web应用程序)。关闭默认的安全配置,可以通过添加一个WebSecurityConfigurerAdapter 类型的bean实现。

关闭认证管理配置,可以通过添加 UserDetailsServiceAuthenticationProvider 与 AuthenticationManager的类型。

在一个web应用程序中,你默认得到的一个基础特性是:

  • 一个UserDetailsService bean(在内存中存储以及一个产生密码的word)
  • 基于表格的登录或者是基于整个http的安全认证要求(包括执行者的点)。
可以通过添加一个自定义的 WebSecurityConfigurerAdapter 去覆盖其规则。spring boot对 actuator endpoints于静态资源 提供了便利的方法去处理。 EndpointRequest  能够创建一个基于 management.endpoints.web.base-path  的属性。 StaticResourceRequest  能够给创建一个指定静态资源位置的   RequestMatcher  。

OAuth2

其是一种被spring广泛支持的授权框架。

客户端

如果你有 spring-security-oauth2-client  ,你就可以充分利用其自动配置简化安装oauth2的客户端。这充分利用其   OAuth2ClientProperties 的配置属性,你可以通过使用   spring.security.oauth2.client  前缀 注册客户端:代码如下
spring.security.oauth2.client.registration.my-client-1.client-id=abcd
spring.security.oauth2.client.registration.my-client-1.client-secret=password
spring.security.oauth2.client.registration.my-client-1.client-name=Client for user scope
spring.security.oauth2.client.registration.my-client-1.provider=my-oauth-provider
spring.security.oauth2.client.registration.my-client-1.scope=user
spring.security.oauth2.client.registration.my-client-1.redirect-uri-template=http://my-redirect-uri.com
spring.security.oauth2.client.registration.my-client-1.client-authentication-method=basic
spring.security.oauth2.client.registration.my-client-1.authorization-grant-type=authorization_code

spring.security.oauth2.client.registration.my-client-2.client-id=abcd
spring.security.oauth2.client.registration.my-client-2.client-secret=password
spring.security.oauth2.client.registration.my-client-2.client-name=Client for email scope
spring.security.oauth2.client.registration.my-client-2.provider=my-oauth-provider
spring.security.oauth2.client.registration.my-client-2.scope=email
spring.security.oauth2.client.registration.my-client-2.redirect-uri-template=http://my-redirect-uri.com
spring.security.oauth2.client.registration.my-client-2.client-authentication-method=basic
spring.security.oauth2.client.registration.my-client-2.authorization-grant-type=authorization_code

spring.security.oauth2.client.provider.my-oauth-provider.authorization-uri=http://my-auth-server/oauth/authorize
spring.security.oauth2.client.provider.my-oauth-provider.token-uri=http://my-auth-server/oauth/token
spring.security.oauth2.client.provider.my-oauth-provider.user-info-uri=http://my-auth-server/userinfo
spring.security.oauth2.client.provider.my-oauth-provider.jwk-set-uri=http://my-auth-server/token_keys
spring.security.oauth2.client.provider.my-oauth-provider.user-name-attribute=name
默认情况下,spring security 的 OAuth2LoginAuthenticationFilter  是仅仅处理与   /login/oauth2/code/* .匹配的URI。如果想要自定义话一个不同的 redirect-uri-template  ,需要提供自定义模式的处理配置,如下代码
public class OAuth2LoginSecurityConfig extends WebSecurityConfigurerAdapter {

	@Override
	protected void configure(HttpSecurity http) throws Exception {
		http
			.authorizeRequests()
				.anyRequest().authenticated()
				.and()
			.oauth2Login()
				.redirectionEndpoint()
					.baseUri("/custom-callback");
	}
}
对于一些通用的 OAuth2  (   Google, Github, Facebook,  与Okta ),我们提供了许多默认的提供者。

执行者安全

如果执行者也是在使用中,你可以看到:
  • 管理终端也是安全的,即使应用终端不是安全的。
  • 安全事件被转换为审计实例并且被保存到审计存储库中。
  • 默认用户在拥有ACTUATOR 角色的同时也拥有user的角色
其ACTUATOR的安全特性可以通过外部文件进行修改。覆盖应用程序的链接规则,但是不是 actuator  的链接规则,添加一个 WebSecurityConfigurerAdapter  类型的bean和使用 @Order(SecurityProperties.ACCESS_OVERRIDE_ORDER) 。当确实想要覆盖应用程序的规则以及 ACTUATOR  的链接规则,使用 @Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)



目录
相关文章
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
3322 17
Spring Boot 两种部署到服务器的方式
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
822 0
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
1024 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
安全 Java 测试技术
如何在 Spring Boot 中禁用 Actuator 端点安全?
如何在 Spring Boot 中禁用 Actuator 端点安全?
3750 1
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
1377 2
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
915 2
|
安全 Java 对象存储
安全性考量:Spring Security与Netflix OSS在微服务安全中的作用
安全性考量:Spring Security与Netflix OSS在微服务安全中的作用
362 1
|
安全 Java API
构建基于Spring Boot的REST API安全机制
构建基于Spring Boot的REST API安全机制
|
安全 Java 数据安全/隐私保护
Spring Boot中的安全漏洞防护
Spring Boot中的安全漏洞防护
|
安全 Java 数据库连接
Spring Boot 优雅关机时异步线程安全优化
Spring Boot 优雅关机时异步线程安全优化
771 1

热门文章

最新文章