0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Springboot WebSecurityConfigurerAdapterが使用できない件

Last updated at Posted at 2024-10-23

はじめに

Spring解体新書 第2版の書籍にて学習を実施していました。
11章のSpringSecurityに関する部分だったのですが、書籍通りにソースを記述しても、エラーが解消されませんでした。
image.png


問題点

WebSecurityConfigurerAdapterなんて存在しないよと怒られていました。。
サンプルソースとも全く同じなのに、、

package com.example.demo.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@EnableWebSecurity
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    /** セキュリティの対象外を設定 */
    @Override
    public void configure(WebSecurity web) throws Exception {
        // セキュリティを適用しない
        web
            .ignoring()
                .antMatchers("/webjars/**")
                .antMatchers("/css/**")
                .antMatchers("/js/**")
                .antMatchers("/h2-console/**");
    }

    /** セキュリティの各種設定 */
    @Override
    protected void configure(HttpSecurity http) throws Exception {

        // ログイン不要ページの設定
        http
            .authorizeRequests()
                .antMatchers("/login").permitAll() //直リンクOK
                .antMatchers("/user/signup").permitAll() //直リンクOK
                .anyRequest().authenticated(); // それ以外は直リンクNG

        // CSRF対策を無効に設定(一時的)
        http.csrf().disable();
    }
}

調べる中での解決策

Spring公式ブログにより詳細な解説がありました
https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter

またこの方の記事で詳細的な内容を学ばせて頂きました。
最近(5.4〜6.0)のSpring Securityでは、セキュリティ設定の書き方が大幅に変わってみたいです。
(書籍は変更しないとですね、、)
https://qiita.com/suke_masa/items/908805dd45df08ba28d8

以下のように修正してみました。動いたので恐らく大丈夫です。。

package com.example.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;

@Configuration
public class SecurityConfig {

    /** セキュリティの対象外を設定 */
	@Bean
	public WebSecurityCustomizer webSecurityCustomizer() {
	    return web -> web.ignoring().requestMatchers(
	            new AntPathRequestMatcher("/webjars/**")
	           ,new AntPathRequestMatcher("/css/**")
	           ,new AntPathRequestMatcher("/js/**")
	           ,new AntPathRequestMatcher("/h2-console/**"));
	}

    /** セキュリティの各種設定 */
    @Bean
	public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception  {

        // ログイン不要ページの設定
        http
            .authorizeHttpRequests()
                .requestMatchers("/login").permitAll() //直リンクOK
                .requestMatchers("/user/signup").permitAll() //直リンクOK
                .anyRequest().authenticated(); // それ以外は直リンクNG

        // CSRF対策を無効に設定(一時的)
        http.csrf().disable();
        
        return http.build();
    }
}

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?