spring - 在 “OAUTH2” 启用的启动应用程序中禁用身份验证

标签 spring spring-boot spring-security oauth-2.0

如何在启用“OAUTH2”的 spring-boot 应用程序中禁用身份验证? 这通常是测试或构建阶段所必需的。

最佳答案

当我们想要进行测试/构建并且没有即时可用的 OAuth2 token 时,这是一个有效的场景。 以下是应遵循的步骤:

  1. 创建一个不带 OAuth2 配置的 YAML 文件(即 application-{profile_name}.yml)并在其中添加以下属性:

    Security.ignored = /** 
    security.basic.enable=false
    
  2. 添加一个绕过 HTTP/S 请求授权的类。注意:此类应具有相同的配置文件名称(即 {profile_name})。

    @Profile({"profile_name"})
    public class DisableOAuth2Config {
    
        @Bean
        public ResourceServerConfigurer resourceServerConfigurer() {
            return new ResourceServerConfigurerAdapter() {
                @Override
                public void configure(HttpSecurity http) throws Exception {
                    http
                        .authorizeRequests()
                            .antMatchers("/**").permitAll();
                }
            };
        }
    }
    
  3. 在我们仍希望获得安全性的SecurityConfiguration类中提供Profile@Profile({"local","dev","aws"}),这将区分启用/禁用安全性的配置文件。

  4. 注意:请检查注解@EnableResourceServe@EnableWebSecurity@EnableGlobalMethodSecurity(prePostEnabled = true)。它们应该仅在 SecurityConfiguration 类中可用。不是多个地方,也不在 SpringBoot 类中。

关于spring - 在 “OAUTH2” 启用的启动应用程序中禁用身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48090555/

相关文章:

java - 使用@Transactional 注解的问题

java - 将 Spring Transaction 与 Mybatis 批处理结合使用

java - Spring Boot App 打包成 jar 后不提供静态资源

spring-boot - 从 session 外部更新在线用户数据(无需重新验证)

java - 如何配置Spring安全性

spring - ResponseEntity<JSON> - header 中没有内容长度

spring-boot - 在docker容器内的外部tomcat上运行spring boot时出错

Java Spring Boot : How to map my app root (“/” ) to index. html?

java - spring boot 是否提供标准的登录和注册支持

java - 如何在 spring security 中模拟 wicket setResponsePage()