- Java 17
- Maven
- Spring Boot 3.0.3
- Oracle 11g
- IntelliJ Ultimate
- DBeaver
pom.xml
<!-- spring-security-core -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>3.0.4</version>
</dependency>
<!-- jwt -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
SecurityConfig.java
package com.example.practice.security.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
private static final String[] AUTH_WHITELIST = {
"/home", "/login", "/register", "/bootstrap/**"
};
@Bean
protected SecurityFilterChain config(HttpSecurity http) throws Exception {
// http.csrf().disable();
http.authorizeHttpRequests(authorize -> authorize
.shouldFilterAllDispatcherTypes(false)
.requestMatchers(AUTH_WHITELIST).permitAll() // 해당 경로 접근 허용
.anyRequest().authenticated() // 그 외 페이지는 인증을 거쳐야함
);
http.formLogin(login -> login
.loginPage("/login") // 로그인 페이지 지정 지정
.loginProcessingUrl("/") // 로그인 처리 URL 지정
.failureForwardUrl("/login") // 로그인 실패 URL 설정
.usernameParameter("m_id")
.passwordParameter("m_password")
.defaultSuccessUrl("/index", true)
.permitAll()
);
// .logout(withDefaults()) // 기본 예제 logout
http.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/login/logout")) // 로그아웃 url
.logoutSuccessUrl("/") // 성공 url
.invalidateHttpSession(true) // 인증정보 삭제 세션 무효화
.deleteCookies("JSESSIONID", "remember-me"); // JSESSIONID , remember-me 쿠키 삭제
http.sessionManagement()
.maximumSessions(1) // 세션 최대 허용 수 1 , -1이면 무제한 세션 허용
.maxSessionsPreventsLogin(false) // true 면 중복 로그인 제한 , false면 이전 로그인 세션 해제
.expiredUrl("/"); // 세션이 만료되었을때 이동 페이지
// http.rememberMe() // 로그인 유지
// .key("02930129FWSJKW29213912") // 토큰 생성 시 키 값
// .alwaysRemember(false) // 항상 기억만 할 것인지 여부
// .tokenValiditySeconds(60) // 시간초 , 1분 유지
// .userDetailsService(RemembermeUserDetailsService)
// .tokenRepository(tokenRepository())
// .rememberMeParameter("remember-me"); // remember-me 파라미터 이름 지정
// exception 처리
// http.exceptionHandling()
// .accessDeniedHandler(webAccessDeniedHandler) // 권한이 없는 사용자 접근 시
// .authenticationEntryPoint(webAuthenticationEntryPoint); // 인증되지 않은 사용자 접근 시
return http.build();
}
}
로그인 및 권한 등의 처리를 위해 Security 설정을 계속 만지고 있는데
잘 안돼서 우선 설정만 남기려고 한다
Spring Boot 3.0.0 이상부터는 WebSecurityConfigurerAdapter 를 사용할 수 없으며
위의 SecurityConfig는 3.0.0 이상의 버전에 맞추어 설정 중이며
JPA를 사용하지 않고 구현하려하는 중이다
'개발 > Spring' 카테고리의 다른 글
[SpringBoot] Scheduler(스캐줄러) 사용하기, cron 표현식 (0) | 2023.05.14 |
---|---|
[EClipse] 이클립스 설치하기 (0) | 2023.05.02 |
[SpringBoot] Session을 이용한 로그인 , 인증 하기 (0) | 2023.04.26 |
[Spring] Bootstrap 적용 웹 게시판 만들기 - 회원가입 (0) | 2023.04.24 |
[Spring] Bootstrap SB Admin 2 설치하기 (0) | 2023.04.24 |
댓글