Spring Security - 환경 설정

진경천·2024년 12월 3일

SpringSecurity는 spring에서의 보안 모듈로 웹 어플리케이션의 인증과 인가를 담당한다.

SpringConfig 설정

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
	@Override
    protected void configure(HttpSecurity http) throws Exception {
    	http.authorizeRequests()
        		.anyMatchers("/", "/home").permitAll()
                .anyRequest().authenticated()
                .and()
            .formLogin()
            	.loginPage("/login")
                .permitAll()
                .and()
            .logout()
            	.permitAll();
	}
}
메서드설명
authorizeRequests()HttpServletRequest를 사용하는 요청들에 대한 접근 제한 설정
antMatchers()특정 경로를 지정
permitAll()모든 사용자에게 접근 권한 허용
anyRequest().authenticated()인증되지 않은 모든 요청을 차단하고 인증을 요구
formLogin()폼 기반 로그인을 사용하도록 설정
loginPage()사용자 정의 로그인 페이지 경로 지정
logout()로그아웃 지원

쿠키 기반 인증 설정

http
	.rememberMe()
    	.key("uniqueAndSecret")
        .tokenValiditySeconds(60 * 60 * 24);
메서드설명
rememberMe()사용자가 웹 사이트에 다시 방문할 때 로그인 유지
key(String)remberMe 쿠키를 생성할 때 사용
tokenValiditySeconds(int)토큰 유효 시간 설정 (단위: 초)

세션 관리 설정

http 
	.sessionManagement()
    	.sessionFixation().none()
        .maximumSessions(1)
        .maxSessionsPreventsLogin(false)
        .expiredUrl("/session-expired");
메서드설명
sessionFixation().none()세션 고정 공격에 대해 아무런 조치를 취하지 않음
maximumSessions(int n)동시 세션 제어로 사용자당 최대 세션 수 n으로 제한
maxSessionsPreventsLogin(boolean)최대 세션 도달 후 추가 로그인 방지하지 않음false 설정 시 새로운 세션 생성이 허용되며 이전 세션은 만료
expiredUrl(String url)세션이 만료된 경우, 사용자를 리디렉션할 URL 설정

CSRF 설정

http
	.csrf()
		.csrfTokenRepository(CookieCsrfToken Repository.withHttpOnlyFalse());
메서드설명
csrf()Cross㎼Site Request Forgery 보호 활성화
csrfTokenRepository()csrf 토큰 쿠키에 저장
withHttpOnlyFalse()생성된 쿠키가 HttpOnly 속성을 false로 설정

HTTPS 설정

http 
	.requiresChannel()
    .anyRequest()
    .requiresSecure();
메서드설명
requiresChannel()HTTP 채널 요구사항 설정
anyRequest().requiresSecure()어떤 요청이든지 안전한 채널, 즉 HTTPS를 통해 이루어져야 함을 요구
profile
어중이떠중이

0개의 댓글