티스토리 뷰

Dev/Spring

Spring Security 적용해보기

Alxndr 2020. 6. 2. 23:22

Spring security Setting

Spring boot 에 Securiry dependency를 추가하고 간단하게 설정하는 방법을 포스팅합니다.

부족한 부분은 계속 수정할 예정입니다.


build.gradle

implementation 'org.springframework.boot:spring-boot-starter-security'

위와 같이 dependecy 추가하고 프로젝트를 실행해보면

모든 요청에 Security가 걸리게 되어 기본 로그인 화면으로 Redirect됩니다.

기본 로그인 정보는

콘솔 log 를 확인해보면 아래와 같이 자동으로 비밀번호가 생성된 것을 확인할 수 있습니다.

Default ID : user

하지만 모든 연결을 Security가 막는것을 원하지 않기 때문에.

몇가지 셋팅을 진행하도록 합니다.


  • SecurityConfiguration.java
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
      http.authorizeRequests()
              .antMatchers("/h2-console/**").permitAll()
              .mvcMatchers("/", "/login", "/sign-up").permitAll()
              .anyRequest().authenticated()
              .and()
              .csrf().ignoringAntMatchers("/h2-console/**")
      .and()
      .headers()
              .addHeaderWriter(
              new XFrameOptionsHeaderWriter(
                      new WhiteListedAllowFromStrategy(Arrays.asList("localhost"))
              )
      )
      .frameOptions().sameOrigin();
    }
}

하나씩 천천히 살펴보겠습니다.

  • @Configuration 해당 클래스는 설정에 관여하는 클래스임을 명시

  • @EnabledWebSecurity 웹 보안을 활성화

    • WebSecurityConfigurerAdapter 를 상속받아야 한다
  • HttpSecurity 를 인자로 받는 Configure를 Override한다

  • .antMatchers() 안에 지정된 경로는 .permitAll() .authenticated() 등 다양하게 설정 해줄 수 있다.

  • .mvcMatchers/login /login.html /login.js URi 뿐만 아니라 Spring MVC pattern을 감지..? 한다.

    Difference between antMatcher and mvcMatcher

  • .anyRequest() 위에 설정을 제외한 요청은 모두 .authenticated() 인증이 필요한 요청으로 설정한다.

  • .csrf().ignoringAntMatchers('/h2-console/**')

    • h2-console에 접속해서 로그인을 하면 csrf 에러가 발생하기 때문에 /h2-console/** 로 오는 요청은 csrf 검증 해제하는 설정

아직 익숙하지 않아서 좀 지저분 하지만,

csrfX-frame Header체크 까지 해제해주었습니다.

많은 분들에게 도움이 되었길 바랍니다.

감사합니다.


References

HomoEfficio/dev-tips

X-Frame-Options

사이트 간 요청 위조

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함