스프링 시큐리티 spring security 는 스프링 기반의 애플리케이션 보안(인증, 인가, 권한) 을 담당하는 스프링 하위 프레임워크이다.
인증과 인가
인증은 사용자의 신원을 입증하는 과정이다.
예를 들어 사용자가 사이트에 로그인을 할 때 누구인지 혹인하는 과정을 인증이라고 함
인가는 인증과는 다르게 사이트의 특정 부분에 접근할 수 있는지에 권한을 확인하는 작업임
예를 들어 ㅗ간리자는 관리자 페이지에 들어갈 수 있지만 일반 사용자는 관리자 페이지에 들어갈 수 없다. 이런 권한을 확인하는 과정을 인가라고 한다.
인증과 인가 관련 코드를 아무런 도구의 도움 없이 작성하려면 굉장히 많은 시간이 필요하고 스프링시큐리티를 사용하면 아주 쉽게 처리가 가능하다.
스프링 시큐리티
스프링 기반 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크 이다. 보안 관련 옵션을 많이 제공하며 애너테이션으로 설정도 매우쉽게 적용 한다.
CSRF공격, 세션고정 공격을 방어해주고, 요청 헤더도 보안 처리를 해주므로 개발자가 보안관련 개발에 집중 할 수 있다.
CSRF공격 - 사용자의 권한을 가지고 특정 동작을 수행하도록 유도하는 공격을 말함
세션고정공격 - 사용자의 인증 정보를 탈취하거나 변조하는 공격을 말함
필터기반으로 동작하는 스프링 시큐리티
스프링 시큐리티는 이렇게 다양한 필터들로 나누어져 있으며, 각 필터에서 인증, 인가와 관련된 작업을 처리함
SecurityContext PersistenceFilter 에서부터 FilterSecurityInterceptor 까지 순서대로 필터를 거친다.
필터를 실행할때는 화살표로 연결된 오른쪽 박스의 클래스를 거치며 실행된다.
원할때 특정 필터를 제거하거나 필터 뒤에 커스텀 필터를 넣는 등 설정도 가능하다.
여기에서 눈여겨볼 필터는 UsernamePasswordAuthenticationFilter 과 FilterSecurityInterceptor이다.
UsernamePasswordAuthenticationFilter -> 아이디와 패스워드가 넘어오면 인증 요청을 위임하는 인증관리자 역할을 한다.
FilterSecurityInterceptor -> 권한부여 처리를 위임해 접근 제어 결정을 쉽게 하는 접근 결정 관리자 역할 을 한다.
'dev > 자바' 카테고리의 다른 글
JAVA Optional이란? (1) | 2024.02.27 |
---|---|
Spring Boot Build 없이 Run. 톰캣 서버 재기동 없이 수정 반영 class resource jsp 등등 (0) | 2022.11.08 |
eclipse maven프로젝트를 gradle로 변경 (0) | 2022.10.13 |
Lombok (0) | 2022.09.27 |
[자바] Eclipse 에서 DCEVM 사용하기(서버재구동안하기.) (0) | 2021.02.19 |