当前位置: 首页 > 知识库问答 >
问题:

Spring Security配置:HTTP 403错误

阎鸿煊
2023-03-14

我正试图按照web上的指南使用Spring Security保护我的网站。

所以在我的服务器端,我有以下类。

我的网络安全配置适配器

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter implements ApplicationContextAware {

    @Override
    protected void registerAuthentication(AuthenticationManagerBuilde rauthManagerBuilder) throws Exception {
        authManagerBuilder.inMemoryAuthentication().withUser("user").password("password").roles("ADMIN");
    }
}

我的控制器:

@Controller
//@RequestMapping("/course")
public class CourseController implements ApplicationContextAware {

    @RequestMapping(value="/course", method = RequestMethod.GET, produces="application/json")
    public @ResponseBody List<Course> get(  // The criterion used to find.
        @RequestParam(value = "what", required = true) String what,
        @RequestParam(value = "value", required = true) String value) {
        //.....
    }

    @RequestMapping(value = "/course", method = RequestMethod.POST, produces = "application/json")
    public List<Course> upload(@RequestBody Course[] cs) {
        
    }
}

让我非常困惑的是服务器不响应POST/DELETE方法,而GET方法工作正常。顺便说一句,我在客户端使用RestTemboard

例外情况包括:

Exception in thread "main" org.springframework.web.client.HttpClientErrorException: 403 Forbidden
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91)
    at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:574)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:530)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:487)
    at org.springframework.web.client.RestTemplate.delete(RestTemplate.java:385)
    at hello.Application.createRestTemplate(Application.java:149)
    at hello.Application.main(Application.java:99)

我在网上搜索了好几天了。还是没有线索。请帮忙。非常感谢

共有3个答案

钱瑞
2023-03-14

该问题可能是由于CSRF保护,请同意上面的评论。然而,通过使用此配置,该方法取消了Spring Security性。

所以您可以使用以下代码:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();

        auth
                .inMemoryAuthentication()
                    .withUser("admin")
                        .password(encoder.encode("admin"))
                        .roles("ADMIN", "USER")
                .and()
                    .withUser("user")
                        .password(encoder.encode("password"))
                        .roles("USER");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .anyRequest()
                .authenticated()
                .and()
                .httpBasic();

        http.csrf().disable();
    }
}
汪坚
2023-03-14

该问题可能与CSRF或CORS安全保护有关。

  • FOR CSRF:如果应用程序用户没有从浏览器中使用它,您可以禁用它。
  • 对于CORS:您可以指定来源并允许HTTP方法。

下面的代码禁用CSRF并允许所有源代码和HTTP方法。所以使用时要注意。

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter  implements WebMvcConfigurer {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable();
    }

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**").allowedMethods("*");
    }

}
田成仁
2023-03-14

该问题可能是由于CSRF保护造成的。如果用户不会在Web浏览器中使用您的应用程序,那么禁用CSRF保护是安全的。否则,您应该确保在请求中包含CSRF令牌。

要禁用CSRF保护,您可以使用以下操作:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig
    extends WebSecurityConfigurerAdapter implements ApplicationContextAware {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            // ...
            .csrf().disable();
    }

    @Override
    protected void registerAuthentication(AuthenticationManagerBuilder authManagerBuilder) throws Exception {
        authManagerBuilder
            .inMemoryAuthentication()
                .withUser("user").password("password").roles("ADMIN");
    }
}
 类似资料:
  • 版本介绍 百度移动统计提供两种版本的Crash错误统计功能:标准版、详细Crash版。 标准版:采集的Crash日志内容较少,包含关键的LastBacktrace等信息。 详细Crash版:采集的Crash日志内容丰富,接近iOS系统完整的Crash格式,包含LastBacktrace、thread等信息。 由于加入详细的Crash统计功能会使SDK的体积增大,所以请结合自身业务场景,合理选择SD

  • 百度移动统计提供了错误统计功能。包括错误报告,错误路径等。 由于加入详细的错误统计上报功能,会导致SDK的整体大小变大。故我们针对那些只需要基本的错误次数统计功能的用户提供了标准的java错误统计功能,集成在了应用分析(无埋点)和应用分析(手动埋点)SDK中;针对需要native crash错误信息的用户,提供了附加的Crash版本。

  • 我正在尝试启动我的hadoop应用程序,但是在启动时我在日志文件中看到了这一点,有没有人知道问题是什么? 正在为HDFS创建文件系统://10.170.4.141:9000 java.io.ioException:config()在org.apache.hadoop.conf.configuration(configuration.java:229)在org.apache.hadoop.conf.

  • 我有一个JSON: 我创建了以下pojo 在我的控制器中,我有一个@PostMapping方法,我尝试检索DocumentToSignRestRequest: 并使用模型映射器将其传递给DocumentDto类:DocumentDto DocumentDto=ModelMapper。地图(documentToSignRestRequest,DocumentDto.class); 这个类的不同属性与

  • 我在Visual Studio 2015中使用.NET Framework 4.6创建了一个新的Azure WebJob项目。 在 app.config 中,我设置了三个连接字符串: AzureWebJobsDashboard AzureWebJobsStorage MyDatabaseConnectionString AzureWebJobsDashboard和AzureWebJobsStora

  • 我在运行spring项目时出现了这个错误 Java-cp“parser.jar”hu.daniel.hari.learn.spring.orm.main.SpringOrmMain 违规资源:类路径资源[spring.xml] My Beans.xml http://www.springframework.org/schema/beans http://www.springframework.or

  • 我正在练习与springboot的AWS认知连接。但是,SecurityConfig中出现了一个神秘的错误。我不知道为什么会出现错误。分级设置有误吗? 这是密码。 SecurityConfiguration.Class 和CognitoWebConfiguration.class 和build.grade文件 最后,这是一条错误消息。有点长。 null 谁来帮帮我..!

  • 主要内容:1.入门,2.设置用户名和密码1.入门 1.启动一个SpringBoot项目 2.导入SpringSecurity相关依赖 3.编写Controller TestController.java 用户是user 密码是刚刚的 2.设置用户名和密码 1.在配置文件中设置 2.在配置类中设置 3.自定义实现类 2.1 配置文件中设置 2.2 在配置类中设置 设置用户名为zZZ,密码为root 2.3 自定义实现类 配置类: 业务类: