[JWT🔒] 스프링 시큐리티의 구조

2022. 3. 27. 19:21·개발중/JSON Web Tokens (JWT)
728x90
반응형

 

스프링 시큐리티는 주로 서블릿 필터와 이들로 구성된 필터체인을 사용하고 있습니다.

 

실제 로그인 시에 스프링 시큐리티의 동작 플로우를 바탕으로

인증과 관련된 스프링 시큐리티의 아키텍쳐를 알아 보도록 하겠습니다.

 


사용자가 로그인 정보와 함께 인증 요청(Http Request)

 


AuthenticationFilter가 이 요청을 가로챕니다. 

이 때 가로챈 정보를 통해 UsernamePasswordAuthenticationToken이라는 인증용 객체를 생성합니다.


AuthenticationManager의 구현체인 ProviderManager에게 

UsernamePasswordAuthenticationToken 객체를 전달합니다.


다시 AuthenticationProvider에 UsernamePasswordAuthenticationToken 객체를 전달합니다.


실제 데이터베이스에서 사용자 인증정보를 가져오는 UserDetailsService에 사용자 정보(아이디)를 넘겨줍니다.


넘겨받은 사용자 정보를 통해 DB에서 찾은 사용자 정보인 UserDetails 객체를 만듭니다. 

이 때 UserDetails 는 인증용 객체와 도메인용 객체를 분리하지 않고 인증용 객체에 상속해서 사용하기도 합니다.


AuthenticationProvider는 UserDetails를 넘겨받고 사용자 정보를 비교합니다.


인증이 완료되면 권한 등의 사용자 정보를 담은 Authentication 객체를 반환합니다.


다시 최초의 AuthenticationFilter에 Authentication 객체가 반환됩니다.


Authentication 객체를 SecurityContext에 저장합니다.


다음글 [JWT🔒] Spring Security Filter

 

[JWT🔒] Spring Security Filter

실제로 스프링 시큐리티는 훨씬 다양한 필터체인을 사용하여 다양한 커스터마이징을 할 수 있도록 돕습니다. SecurityContextPersistentFilter SecurityContextRepository에서 SecurityContext를 가져와서 Securi..

soobindeveloper8.tistory.com


 

728x90
반응형
저작자표시 (새창열림)

'개발중 > JSON Web Tokens (JWT)' 카테고리의 다른 글

[JWT🔒] JWT(Json Web Token)  (0) 2022.03.27
[JWT🔒] Spring Security Filter  (0) 2022.03.27
[JWT🔒] 인증(Authentication)과 권한(Authorization)  (0) 2022.03.27
'개발중/JSON Web Tokens (JWT)' 카테고리의 다른 글
  • [JWT🔒] JWT(Json Web Token)
  • [JWT🔒] Spring Security Filter
  • [JWT🔒] 인증(Authentication)과 권한(Authorization)
Binsoo
Binsoo
내 트러블 슈팅
  • Binsoo
    정수빈 기술블로그임.
    Binsoo
  • 전체
    오늘
    어제
    • 빈수 개발자 개발 일기 (932)
      • 개발중 (634)
        • Spring Boot (95)
        • Spring Security (2)
        • Spring Batch (6)
        • Spring Boot & Redis (13)
        • Java Persistence API (JPA) (28)
        • Web (42)
        • Rest Api (7)
        • Spring Concurrency Control (3)
        • Redis (8)
        • Kubernetes (k8s) (4)
        • MYSQL (35)
        • AirFlow (15)
        • Docker (2)
        • Git (22)
        • Linux (9)
        • JSON Web Tokens (JWT) (4)
        • Troubleshooting (87)
        • Swagger (0)
        • Vue.js (52)
        • Java (74)
        • html (12)
        • C (5)
        • jQuery (15)
        • JavaServer Pages (JSP) (17)
        • Arduino (1)
        • JavaScript (35)
        • Amazon Web Services (AWS) (11)
        • Algorithm (9)
        • 참고 기능 (18)
        • mongo (2)
      • PROJECT (27)
        • 스프링부트+JPA+몽고 API 개발 (3)
        • MINI (2)
        • 게시판 (3)
        • vue 프로젝트 (1)
        • JPA 사이드 프로젝트 기록 (17)
      • TEAM STUDY (156)
        • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (8)
        • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (12)
        • NAVER DEVELOPER (4)
        • LINUX (23)
        • PYTHON (19)
        • SERVER (8)
        • 알고리즘 코딩 테스트 스터디 (31)
        • 쿠버네티스 (40)
        • 대세는 쿠버네티스 [초급~중급] (11)
      • BOOK (0)
      • 자격증 (61)
        • 리눅스 1급 - 필기 기록 (19)
        • 네트워크 관리사 (2)
        • 네트워크 관리사 2급 - 실기 기록 (21)
        • 네트워크 관리사 2급 - 필기 기록 (16)
        • 정보처리 (2)
      • 직장인 대학원 (17)
        • 기록 (1)
        • 캐글 스터디 (3)
        • R (12)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    쿠버네티스 스터디
    git
    Git 저장소
    네트워크 관리사 요약
    네트워크 관리사
    BackendDevelopment
    리눅스 마스터 1급 요약
    REST API
    파이썬
    리눅스 마스터
    리눅스 마스터 요약
    VUE
    리눅스 마스터 1급 정리
    쿠버네티스
    docker
    네트워크 관리사 학점
    스프링
    알고리즘
    jpa
    redis
    java
    네트워크 관리사 실기
    네트워크 관리사 자격증
    springboot
    리눅스 1급 요약
    네트워크 관리사 2급 실기
    Spring
    리눅스 마스터 1급
    네트워크 관리사 2급
    파이썬 알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Binsoo
[JWT🔒] 스프링 시큐리티의 구조

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.