Spring

Spring Security | 핵심 메소드와 기능 설명

이진유진 2024. 3. 11. 18:07
반응형

 

ADMIN에서의 Spring Security를 이용한 권한 설정을 하면서, 참고한 메소드를 정리해보았습니다.

antMatchers()

  • HTTP 요청 경로에 대한 권한을 설정하는 메소드 
  • .antMatchers("/public/**").permitAll()

authorizeRequests()

  • HTTP 요청에 대한 권한을 구성하는 메소드 
  • .authorizeRequests().antMatchers("/admin/**").hasRole("ADMIN")

formLogin()

  • 폼 기반 로그인을 활성화하는 메소드 
  • .formLogin()

httpBasic()

  • HTTP Basic Authentication을 활성화하는 메소드 
  • .httpBasic()

logout()

  • 로그아웃 구성을 위한 메소드
  • .logout()

csrf()

  • Cross-Site Request Forgery(CSRF) 공격 방지를 활성화하는 메소드
  • .csrf()

sessionManagement()

  • 세션 관리 설정을 구성하는 메소드 
  • .sessionManagement().maximumSessions(1).expiredUrl("/session-expired")

authenticationManagerBean()

  • 커스텀 인증 매니저 빈을 생성하기 위한 메소드 

logoutSuccessUrl()

  • 로그아웃 후에 리다이렉트될 URL을 설정하는 메소드
  • .logout().logoutSuccessUrl("/bye")

and()

  • 여러 보안 설정을 연결하기 위한 메소드

exceptionHandling()

  • 예외 처리 관련 설정을 구성하는 메소드
  • .exceptionHandling().accessDeniedPage("/page")

permitAll()

  • 모든 사용자에 대해 특정 경로를 허용하는 메소드
  • .antMatchers("/public/**").permitAll()

authenticated()

  • 인증된 사용자에 대해 특정 요청을 허용하는 메소드 
  • .antMatchers("/secured/**").authenticated()

addFilterBefore(new CustomFilter(), BasicAuthenticationFilter.class)

  • 사용자 정의 필터를 특정 필터 앞에 추가합니다. 

addFilterAt(new CustomFilter(), SecurityConfigurerAdapter.Position.FORM_LOGIN);

  • 특정 위치에 사용자 정의 필터를 추가합니다. 
  • 위치는 SecurityConfigurerAdapter에서 제공하는, SecurityConfigurerAdapter.Position enum을 사용하여 지정됩니다.

addFilter(new CustomFilter())

  • 특정 위치에 사용자 정의 필터를 추가합니다. 
  • addFilterAt과 유사하지만, 더 간단한 형태입니다. 

addFilterChain(new CustomFilter(), BasicAuthenticationFilter.class).addFilterChain("/api/**", customFilterChain())

  • 특정 경로에 대한 필터 체인을 설정합니다. 
  • addFilterBefore, addFilterAfter과 함께 사용될 수 있습니다. 

 

BasicAuthenticationFilter란?

Spring Security 에서 HTTP Basic Authentication을 처리하는 필터입니다. 

HTTP Basic Authentication은 클라이언트가 서버에 인증하기 위해 사용되는 간단한 인증 방식 중 하나 입니다. 

클라이언트는 사용자 이름과 비밀번호를 Base64로 인코딩하여 HTTP 요청 헤더의 'Authorization' 필드와 함께 보냅니다. 

 

BasicAuthenticationFilter는 Spring Security 필터 체인에서 동작하며, 

인증을 처리하기 전에 HTTP 요청에서 인증 정보를 추출하고 검증합니다. 

 

  1. 클라이언트가 요청을 보낼 때, 'BasicAuthenticationFilter'는 요청 헤더에서 'Authorization' 필드를 확인
  2. 'Authorization' 필드가 존재하고, Basic 스키마를 사용하고 있다면, 사용자 이름과 비밀번호 추출
  3. 추출된 사용자 이름과 비밀번호 사용해 인증 시도 
  4. 인증 성공 시, 요청 처리, 실패시 인증 오류 반환

 

Basic 스키마란?

HTTP 기본 인증(Basic Authentication)에서 사용되는 인증 스키마 중 하나입니다. 

HTTP 기본 인증은 클라이언트가 서버에 인증하기 위해 사용되는 가장 간단한 인증 방식이며,
사용자 이름과 비밀번호를 요청 헤더에 포함하여 보내는 방식입니다. 

 

Basic 스키마 작동방식

 

  1. 클라이언트가 서버에 요청을 보낼 때, 요청 헤더의 Authorization 필드에 사용자 이름과 비밀번호를 함께 보냄 
  2. 사용자 이름과 비밀번호는 콜론(:)으로 구분, 그 다음 Base64로 인코딩 
  3. Authorization 헤더 값은 Basic이라는 문자열과 Base64로 인코딩된 사용자 이름과 비밀번호의 조합 

Ex) Authorization: Basic dXN1cm5hb.....=

반응형