[Spring Security란]
Spring Security는 Spring 기반의 애플리케이션의 보안(인증(Authentication과 권한, 인가(Authorization) 등)을 담당하는 스프링 하위 프레임워크이다.
기본 동작방식으로는 서블릿의 필터와 인터셉터로 처리된다.
스프링기반의 어플리케이션의 보안을 담당하는 프레임워크로써 사용자인증과 권한에대한 강력한 기능을 갖게된다.
version
- spring boot 2.6.3
- jdk 1.8
- gradle 7.4.1
1. gradle 의존성추가
bulid.gradle 에 해당내용 추가 (어디서봤는데 버전은 다 맞춰주는게 좋다더라..)
	// https://mvnrepository.com/artifact/org.springframework.security/spring-security-web
	implementation group: 'org.springframework.security', name: 'spring-security-web', version: '5.6.1'
	// https://mvnrepository.com/artifact/org.springframework.security/spring-security-config
	implementation group: 'org.springframework.security', name: 'spring-security-config', version: '5.6.1'
	// https://mvnrepository.com/artifact/org.springframework.security/spring-security-core
	implementation group: 'org.springframework.security', name: 'spring-security-core', version: '5.6.1'
	// https://mvnrepository.com/artifact/org.springframework.security/spring-security-taglibs
	implementation group: 'org.springframework.security', name: 'spring-security-taglibs', version: '5.6.1'
2. spring security 설정
✔ spring security에대한 WebSecurity 설정을 해주는부분이다.
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter{
@Override
	public void configure(WebSecurity web) throws Exception{
		// 스프링 시큐리티 룰을 무시하는 URL 규칙
		web.ignoring()
			.antMatchers("/js/**","/css/**","/images/**","/font/**","html/**");
		/*
		 web.ignoring() 
		 	.antMatchers("/resources/**") 
		 	.antMatchers("/css/**") 
		 	.antMatchers("/vendor/**") 
		 	.antMatchers("/js/**") 
		 	.antMatchers("/favicon/**")
		 	.antMatchers("/img/**");
		 */
	}
    
 
 ....
 
 
}- 해당경로는 모두 spring security 가 무시할수있도록 설정한부분이다.
- 기본경로는 resource/static 이기때문에 해당경로를 잘 확인해야된다.
✔ spring security에대한 HttpSecurity설정을 해주는부분이다. (위의 config 클래스안에 들어간다)
	....
    
    @Override
	protected void configure(HttpSecurity http) throws Exception{
    
        //실제 스프링 시큐리티 규칙
		http.authorizeHttpRequests()
			.antMatchers("/**").permitAll()
		.and()
			.formLogin()
			.loginPage("/login/form")
			.usernameParameter("userId")
			.passwordParameter("password")
			.loginProcessingUrl("/login/perform")
			.defaultSuccessUrl("/login/success")
			.failureUrl("/login/fail")
		.and()
			.logout()
			.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
			.logoutSuccessUrl("/login/logout")
			.invalidateHttpSession(true)
			.and()
			.exceptionHandling().accessDeniedPage("/login/denied");
    }
    
    ...✨ antMatchers() 에대한 항목들
- hasRole() 또는 hasAnyRole() ➡ 특정권한을 가진 한명 또는 여러명 사용자만 접근가능
- hasIpAddress() ➡ 특정아이피주소만 접근가능
- permitAll() 또는 denyAll() ➡ 접근을 전부 허용하거나 거부
- isAnonymouse() ➡ 인증하지 않은 사용자가 접근가능
- isAuthenticated() ➡ 인증한 사용자가 접근가능
- rememberMe() ➡ 로그인한 사용자만 접근가능
'Framework > Spring Boot😊' 카테고리의 다른 글
| [Spring Boot] 공공데이터 API 를 활용하여 DataBase 에 Scheduled를 통해 insert 하기 (0) | 2023.08.10 | 
|---|---|
| [Spring Boot] Spring Security 의존성 추가 시 bulid.gradle 파일 에러 해결 (0) | 2023.07.25 | 
| [Spring Boot] 프로젝트 (3) - 이클립스 Spring Boot 프로젝트 구축 및 로그설정 (0) | 2023.07.13 | 
| [Spring Boot] sentry 를 스프링부트에 적용 (에러로그수집) (0) | 2022.09.21 | 
| [Spring] Spring 과 Spring Boot 차이 (0) | 2020.10.18 |