programming study/B-Spring Security

스프링 시큐리티 사용 이유

gu9gu 2023. 1. 13. 03:40

[Spring Security] 스프링시큐리티의 기본 개념과 구조 (tistory.com)

로그인 인증 인가 처리 보안 스프링 시큐리티를 사용하는 이유? Spring Security 1편 (tistory.com)

SpringSecurity를 왜 써야할까? - Flamme Dev (gitbook.io)

Spring Security 스프링 시큐리티? (tistory.com)

스프링 시큐리티란?

Spring Security 는 Spring 기반으로 인증 과 권한에 대한 것을 Filter에서 처리하는 프레임워크입니다.

 

Filter vs Interceptor

Filter는 Dispatcher Servlet 으로 가기전에 적용되므로 가장먼저 URL 요청을 받지만 Interceptor는 Controller 사이에 위치한다는 점에서 적용 시기의 차이가 있습니다.

 

스링 시큐리티를 사용하는 이유는?

스프링시큐리티에서 제공하는 기능을  직접 구현하려면 어려움이 있기때문에 사용합니다.

잘 알지 못하는 보안적인 처리를 제공해주기 때문에 사용합니다.

스프링 시큐리티 기능. (참고서)

1. 모든 URL을 가로채어 인증을 요구한다.

2. 로그인 폼을 생성해준다.

3. CSRF 공격을 막아준다.

4. Session Fixation을 막아준다. (예제)

5. 요청 헤더 보안

6. Servlet API 메소드 제공

 

 

 

 

 

 

인증 Authentication & 권한허가 Authorization 의 작동 원리

  • 인증  Authentication 의 동작 시나리오 (참고서)
    1. 아이디와 패스워드로 로그인하도록 유저에게 알린다.
    2. 유저에 대한 비밀번호가 올바른지 확인한다.
    3. 유저의 정보 ( ROLE , 계정만료, 계정잠금 등)를 얻는다. (예 - DB를 통해 얻을수 있는 방법이있다)
    4. 사용자에 대한 Security Context (유저의 인증 정보를 가지고있는 컨텍스트) 가 설정된다.
      1. 컨텍스트가 만들어지는과정
      2. 사용자 이름과 암호를 가져 와서 UsernamePasswordAuthenticationToken 인스턴스로 결합합니다.
      3. 검증을 위해 토큰이 AuthenticationManager의 인스턴스로 전달됩니다.
      4. 검증된 토큰을 Authentication 객체로 반환합니다.
      5. 반환 된 Authentication 객체를 SecurityContextHolder.getContext (). setAuthentication (...)을 호출하여 Security Context 에 설정됩니다.
      6. 중요! 마지막으로 GrantedAuthority에 추가된 권한 (Authorization) 이 설정됩니다.
  • 권한 Authorization (참고서)
    • 위에서 생성된 인증(Authenticaion) 객체 구현체는 GrantedAuthority 객체 리스트를 내장하고 있다.
    • GrantedAuthority 는 유저의 권한을 나타내며 권한 허가에 대한 결정이 내려질때 AccessDecisionManager 에 의해 읽혀집니다.