본문 바로가기

Spring Security

패스트캠퍼스 챌린지 12일차 - Spring Security 1

Spring security 1

✔️security 기본 user/password 설정
설정파일로 설정 (한 명의 User만 설정 가능), 테스트 용도로 사용
아래 User 정보로 시큐리티 필터 통과 가능

spring.security.user:
    name: myuser
    password 1234
    roles: USER

✔️ 현재 인증정보에 대한 접근
SecurityContextHolder
spring security가 관리하는 인증정보가 담기는 곳

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();

✔️ 컨트롤러에서 권한검증
@PreAuthorize + @EnableGlobalMethodSecurity(prePostEnabled=true)

@PreAuthorize("hasAnyAutority('ROLE_USER')")
@PreAuthorize("hasAnyAutority('ROLE_ADMIN')")
  • 메서드 수준 권한 제어

Spring Security의 권한 네이밍: ROLE_권한
"hasAnyAutority('ROLE_USER')" : USER라는 권한을 허용
"hasAnyAutority('ROLE_ADMIN')" : ADMIN라는 권한을 허용

 

SecurityConfig 에 설정

@EnableGlobalMethodSecurity(prePostEnabled=true) 

 

✔️ 테스트를 위한 User 생성


WebSecurityConfigurerAdapter를 구현하는 Security 설정클래스(SecurityConfig)에 정의

configure(AuthenricationManagerBuilder auth) 

auth.inMemoryAuthentication()
        .withUser(
            User.builder()
                .username("t1")
                .password(encoder().encode("1234"))
                .roles("USER")
        ).withUser(
            User.builder()
                .username("t2")
                .password(encoder().encode("1234"))
                .roles("ADMIN")
        )
  • 패스워드 인코더 필요
  • 해당 메서드로 User를 생성하면 설정파일에 추가한 User는 무시된다.

패스워드 인코딩 시 테스트 용도로만 withDefaultPasswordEncoder() 사용

auth.inMemoryAuthentication()
    .withUser(
        User.withDefaultPasswordEncoder()
                .username("user1")
                .password("1234")
                .rols("USER")
    )

 

✔️ WebSecurityConfigurerAdapter

  • configure(HttpSecurity http)
    • spring security filter-chain에 대한 설정 및 적용범위 설정
    • spring security filter-chain는 여러 필터에 의해 수행되는 인증 과정
      ex)
  http.logout.disabled()
               .csrf.disabled()
             .header.disabled()

logoutFilter csrfFilter, headerFilter 등을 동작하지 않도록 설정

@EnableWebSecurity(debug=true)로 확인 가능

 

 

✔️ Security filter 디버깅

@EnableWebSecurity(debug = true)

👍 수강인증

 

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.