티스토리 뷰

728x90

기술적인 부분보다

스프링 시큐리티가 무엇인지에 대해 먼저 알아보자.

 

스프링 시큐리티가 무엇일까? 스프링 홈페이지에서 찾아보자 (참고서)

스프링 시큐리티는 강력하고 커스터마이징이 가능한 인증 및 접근제어 프레임 워크이다.

스프링 기반의 애플리케이션을 안전하게 하는데에 사실상 표준이라고 할수있습니다.

스프링 시큐리티는 자바 애플리케이션에 인증과 권한 부여를 제공하는 데 중점을 둔 프레임 워크입니다.

모든 스프링 프로젝트와 마찬가지로 스프링 시큐리티의 진정한 힘은 custom requirements(맞춤형 요구사항)을 충족시키기 위해 얼마나 쉽게 확장될수 있는지에서 알수 있습니다.

 

???????

간단하게 말해서,

스프링 시큐리티는 스프링 기반의 어플리케이션에서 보안을 위해 인증권한 부여를 사용하여 접근을 제어하는 프레임워크이다 라고 알고있으면 될것같다. + 커스터 마이징이 가능하다.

 

 

웹으로 치자면 로그인 기능에서 인증을 하고 관리자나 사용자라는 권한부여하여 권한에 맞게 접속할수 있는 페이지를 제어 한다는 것이다.

 

 


 

로그인 기능?

굳이 써야하는 이유가?

스프링 시큐리티 없이도 만들어 왔잖아?

 

스프링 시큐리티를 왜 써야할까 이유를 찾아보자. (참고서)

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

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

3. CSRF 공격을 막아준다.

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

5. 요청 헤더 보안

6. Servlet API 메소드 제공

보다시피 우리가 몰랐던 보안에 관련된 부분까지 스프링 시큐리티 설정만 해준다면 알아서 척척 처리 해준다.

스프링 시큐리티 없이 로그인 관련된 기능이나 보안처리를 구현하게 된다면 위에 나열된 모든것을 A부터 Z까지 구현해야 한다.

하지만 스프링 시큐리티 프레임워크를 사용하여 이미 짜여 있는 틀을 이용해 쉽게 설정 할 수 있고 입맛에 맞지 않다면 커스터마이징 까지 가능하다.

 

써야할지 말아야 할지의 선택은 개발자의 몫이다. 강요하는 사람은 아무도 없다.

 

인증 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 에 의해 읽혀집니다.

 

반응형

'▶ Spring' 카테고리의 다른 글

DTO, VO, Entity  (0) 2021.05.18
스프링 mvc 패턴  (0) 2019.04.07
스프링프레임워크란  (0) 2018.04.27
Lombok 어노테이션 정리  (0) 2018.04.15
JPA 어노테이션 정리  (0) 2018.04.15
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함