ふたりで

springboot+security+csrf 설정 및 예외처리 설정. 본문

Spring

springboot+security+csrf 설정 및 예외처리 설정.

graykang 2021. 4. 5. 17:28
728x90
반응형
SMALL

spring security에 csrf를 설정하여 사용할 경우 특정 URL 외부 프로그램등에서 POST방식으로

서버에 접근(호출)을 하면 403 에러가 발생한다. 

이런 경우 해당하는  특정 URL만 csrf적용을 받지 않도록 예외 처리를 해주어야 한다.

아래 소스코드의 http.csrf(). ignoringAntMatchers("/callBackPush/**")//csrf예외처리 부분이 특정 URL패턴만

예외 처리한 부분이다.

728x90
반응형
SMALL
	@Override
    protected void configure(HttpSecurity http) throws Exception {
		http.authorizeRequests()
					.antMatchers(
							"/resource/**",
							"/login",
							"/join/**",
							"/login-error",
							"/gateway/**",
							"/popup/**",
							"/error/**"
							).permitAll() /*인증 예외 설정*/ 
					.antMatchers("/user/**").hasRole("USER") 
					.antMatchers("/admin/**").hasRole("ADMIN")
					.anyRequest().authenticated() /* 그 외 모든 요청은 인증된 사용자만 접근이 가능하게 처리*/ 
				.and().formLogin()
					  .loginPage("/login")
					  .loginProcessingUrl("/loginPro")
					  .failureHandler(authFailHandler())
					  .successHandler(successHandler())
					  .permitAll() 
				.and().logout() 
					  .logoutUrl("/logout") /*로그아웃 url*/ 
					  .logoutSuccessUrl("/login") /*로그아웃 성공시 연결할 url*/ 
					  .invalidateHttpSession(true)/*로그아웃시 세션 제거*/
					  .deleteCookies("JSESSIONID")/*쿠키제거*/
					  .clearAuthentication(true)/*권한정보 제거*/
					  .permitAll()
				.and().exceptionHandling()
					  .authenticationEntryPoint(ajaxAwareAuthenticationEntryPoint("/login"))//ajax필터
	            	  .accessDeniedPage("/accessdenied");//url
//				.and().sessionManagement()
//					  .maximumSessions(1) /*session 허용 갯수?*/
//					  .expiredUrl("/login") /* session 만료시 이동 */
//					  .maxSessionsPreventsLogin(true); /* 중복로그인 허용(true),거부(false)*/
		http.csrf().ignoringAntMatchers("/callBackPush/**")//csrf예외처리
				   .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());//csrf 토큰자동생성
//		http.csrf().disable();//csrf 미적용
		http.headers().frameOptions().disable();
    }

 

728x90
반응형
LIST
Comments