반응형
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 요청에서 인증 정보를 추출하고 검증합니다.
- 클라이언트가 요청을 보낼 때, 'BasicAuthenticationFilter'는 요청 헤더에서 'Authorization' 필드를 확인
- 'Authorization' 필드가 존재하고, Basic 스키마를 사용하고 있다면, 사용자 이름과 비밀번호 추출
- 추출된 사용자 이름과 비밀번호 사용해 인증 시도
- 인증 성공 시, 요청 처리, 실패시 인증 오류 반환
Basic 스키마란?
HTTP 기본 인증(Basic Authentication)에서 사용되는 인증 스키마 중 하나입니다.
HTTP 기본 인증은 클라이언트가 서버에 인증하기 위해 사용되는 가장 간단한 인증 방식이며,
사용자 이름과 비밀번호를 요청 헤더에 포함하여 보내는 방식입니다.
Basic 스키마 작동방식
- 클라이언트가 서버에 요청을 보낼 때, 요청 헤더의 Authorization 필드에 사용자 이름과 비밀번호를 함께 보냄
- 사용자 이름과 비밀번호는 콜론(:)으로 구분, 그 다음 Base64로 인코딩
- Authorization 헤더 값은 Basic이라는 문자열과 Base64로 인코딩된 사용자 이름과 비밀번호의 조합
Ex) Authorization: Basic dXN1cm5hb.....=
반응형
'Spring' 카테고리의 다른 글
Spring Security | WebSecurity, HttpSecurity 두가지 주요 클래스에 대하여. (0) | 2024.03.13 |
---|---|
Spring Security | AuthenticationEntryPoint 인터페이스 설명 및 BasicAuthenticationEntryPoint 구현체 설명 (0) | 2024.03.13 |
Spring Security | Spring Security란? (0) | 2024.03.11 |
SpringBoot | ResponseEntity란? (0) | 2024.03.11 |