티스토리 뷰

Spring Security 프레임워크

  스프링 시큐리티는 자바 애플리케이션들을 위한 인증, 인가 모두를 제공하는 프레임워크다. 스프링 시큐리티의

  특징은 다음과 같다.

 

  1. 인증과 인가 모두 이해하기 쉽고 확장가능하게 제공을 한다.
  2. 세션 고정 취약점, 클릭 재킹, CSRF 같은 공격을 예방해준다.
Spring Security 적용 전 후 비교 

  Spring Security 적용 전에는 인가가 필요한 컨트롤러마다 HttpSession을 가져와서 개발자가 권한체크를

  해줘야했다. Spring Security를 사용하면 개발자가 코드로 체크하지 않아도 설정 파일에서 권한이 필요한 페이지

  를 설정해주면 개발자가 아닌 Spring Security 프레임워크 내에서 인증과 인가를 진행해준다. 

  그렇기 때문에 개발자는 비즈니스 로직에만 집중하면 된다. 

Spring Security 등장배경

  어플리케이션 보안은 독립적인 문제인 인증과 인가로 요약할 수 있다. 여기서 말하는 인증(Authentication)

  당신이 누구인가? 에 대한 문제이고 인가(Authorization)는 당신이 무엇을 할 수 있도록 허가받았나의 문제이다. 

  스프링 시큐리티는 인가로부터 인증이 분리되도록 설계된 구조이고 모두 확장이 가능한 포인트를 가지고 있다.

인증(Authentication)

  인증을 위한 주요 전략 인터페이스는 authenticate 메서드를 한가지만 가지고 있는 AuthenticationManager

  클래스다. AuthenticationManagerauthenticate 메서드에서 3가지중 하나를 할 수 있다.

public interface AuthenticationManager {
  Authentication authenticate(Authentication authentication)
    throws AuthenticationException;
}
  1. 만약 입력 값이 유효한 principal(로그인 정보를 담는 객체)라는 것을 나타낸다는 것을 증명할 수 있다면 Authentication을 리턴한다.
  2. 만약 유효하지 않은 principal라면 AuthenticationException 예외가 발생한다.
  3. 결정되지 않는다면 null을 리턴을 한다. 

  일반적으로 AuthenticationManager의 구현체는 ProviderManager 클래스다. ProviderManager 클래스는 다양한

  같은 어플리케이션에서 AuthenticationProviders의 체인에게 위임함으로서 다양한 인증 매커니즘을 지원한다.

public interface AuthenticationProvider {
	Authentication authenticate(Authentication authentication)
			throws AuthenticationException;
	boolean supports(Class<?> authentication);
}

 

인가(Authorization) or 접근통제

  인증이 성공적으로 끝난다면 우리는 인가로 넘어갈 수 있다. 핵심 전략은 AccessDecisionManager 클래스다. 

  이는 프레임워크에 의해 제공받는 3개의 구현체가 있다. AuthenticationProviders의 역할을 위임받는   ProviderManager와 같은 관계를 갖는 구조를 가지고 있다. 

  AccessDecisionVoter은 Authentication 객체와 ConfigAttributes와 함께 구성된 보호된 객체를 검토한다. 

 

참고
https://spring.io/projects/spring-security
https://spring.io/guides/topicals/spring-security-architecture

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함