Spring Boot 3.1 & Spring Security 6: 로그인 프로세스 및 JWT 토큰 동작 설명 (10편)

2023. 8. 8. 00:27·Spring/Spring Security
반응형

지금까지 만든 시큐리티의  동작을  설명하겠다.

 


 

1. 로그인 과정


  1. 로그인 페이지 접근:
    • 사용자는 웹 브라우저에서 로그인 페이지(/login)에 접근한다.
    • 로그인 페이지에는 사용자 이름과 비밀번호를 입력할 수 있는 폼이 있다.

  2. 로그인 요청:
    • 사용자가 자신의 사용자 이름과 비밀번호를 입력하고 "Login" 버튼을 클릭하면, AJAX 요청을 통해 서버에 로그인 요청(/user/login)이 전송된다.

  3. 인증 필터 처리:
    • CustomAuthenticationFilter는 로그인 요청을 가로챈다. 이 필터는 UsernamePasswordAuthenticationFilter를 확장하여 구현되었다.

    • 요청에서 사용자 이름과 비밀번호를 추출하여 UsernamePasswordAuthenticationToken 객체를 생성한다. 이 토큰은 인증을 시도하기 위한 초기 토큰이다.

  4. 인증 관리자 처리:
    • AuthenticationManager는 UsernamePasswordAuthenticationToken을 사용하여 사용자를 인증한다.

    • 인증에 성공하면, 인증된 사용자의 정보와 권한을 포함하는 새로운 Authentication 객체가 반환된다.

  5. JWT 생성:
    • 인증에 성공하면, 사용자의 정보를 기반으로 JWT 토큰이 생성된다. 이 토큰은 사용자의 세션 정보를 안전하게 저장하고 전송하는 데 사용된다.

    • JWT는 헤더, 클레임 및 서명의 세 부분으로 구성된다. 클레임에는 사용자의 정보(예: 사용자 이름)가 포함된다.

  6. 응답 반환:
    • JWT 토큰은 응답의 쿠키 또는 헤더에 포함되어 클라이언트에 반환된다.
    • 클라이언트는 이 토큰을 저장하고 이후의 모든 요청에 포함시켜 서버에 전송한다.

 


 

2. 로그인 후 jwt 토큰을 가진채로 다른 페이지로 이동할 시 동작


  1. 요청 전송:
    • 사용자가 다른 페이지로 이동하려고 할 때, 웹 브라우저는 해당 페이지의 URL에 대한 요청을 서버에 전송한다.
    • 이 요청에는 이전 단계에서 받은 JWT 토큰이 포함된다.

  2. JWT 인증 필터:
    • JwtAuthorizationFilter는 요청을 가로챈다.
    • 필터는 요청에서 JWT 토큰을 추출하고, 토큰의 유효성을 검사한다.
    • 토큰이 유효하면, 토큰에서 사용자의 정보를 추출하고, 해당 사용자의 권한과 함께 새로운 Authentication 객체를 생성한다.

  3. SecurityContext 업데이트:
    • Authentication 객체는 SecurityContext에 저장된다. 이렇게 하면 애플리케이션의 다른 부분에서 현재 인증된 사용자의 정보와 권한을 액세스할 수 있다.

  4. 페이지 접근:
    • 사용자는 요청한 페이지에 접근한다. 페이지에는 로그아웃 버튼이 있을 수 있으며, 이 버튼을 클릭하면 로그아웃 요청이 서버에 전송된다.

이 구현에서는 사용자가 로그인을 시도할 때 초기 인증을 위한 UsernamePasswordAuthenticationToken을 사용한다. 인증에 성공하면 JWT 토큰이 생성되어 클라이언트에 반환되며, 클라이언트는 이 토큰을 사용하여 이후의 요청을 인증한다. JWT 토큰은 사용자의 세션 정보를 안전하게 저장하고 전송하는 데 사용되며, 서버는 이 토큰을 사용하여 사용자의 인증 상태를 확인한다.

 

 


 

 

 

2023.09.04 - [SpringBoot 개발/Spring Security] - Spring Boot 3.1 & Spring Security 6: JWT 검증 리팩토링 (11편)

 

Spring Boot 3.1 & Spring Security 6: JWT 검증 리팩토링 (11편)

JWT 필터 스프링 시큐리티 코드 리팩토링을 진행했다. 1. JwtAuthorizationFilter 클래스를 리팩토링 했다. 기존에는 한줄로 이루어져있던 코드를 extract method로 각각 역할별로 추출했다. import com.fasterxml.

curiousjinan.tistory.com

 

2023.08.08 - [SpringBoot 개발/Spring Security] - Spring Boot 3.1 & Spring Security 6: 로그인 & 메인 페이지 컨트롤러 (9편)

 

Spring Boot 3.1 & Spring Security 6: 로그인 & 메인 페이지 컨트롤러 (9편)

로그인 뷰를 보여주고 action을 실행시킬 로그인 컨트롤러와 메인페이지를 보여주게될 메인 컨트롤러를 작성한다. 1. @Controller - 로그인, 메인페이지 컨트롤러 1-1. LoginController 이 코드는 사용자의

curiousjinan.tistory.com

 

반응형

'Spring > Spring Security' 카테고리의 다른 글

Spring Boot 3.1 & Spring Security 6: JWT 검증 리팩토링 (11편)  (2) 2023.09.04
Spring Security 6 이해하기: 동작 원리와 보안 기능 탐구  (0) 2023.09.04
Spring Boot 3.1 & Spring Security 6: 로그인 & 메인 페이지 컨트롤러 (9편)  (0) 2023.08.08
Spring Boot 3 & Security 6 시리즈: UserDetailsService, DTO 작성하기 (8편)  (0) 2023.08.07
Spring Boot 3 & Security 6 시리즈: JWT Util 클래스 작성 (7편)  (0) 2023.08.07
'Spring/Spring Security' 카테고리의 다른 글
  • Spring Boot 3.1 & Spring Security 6: JWT 검증 리팩토링 (11편)
  • Spring Security 6 이해하기: 동작 원리와 보안 기능 탐구
  • Spring Boot 3.1 & Spring Security 6: 로그인 & 메인 페이지 컨트롤러 (9편)
  • Spring Boot 3 & Security 6 시리즈: UserDetailsService, DTO 작성하기 (8편)
Stark97
Stark97
문의사항 또는 커피챗 요청은 링크드인 메신저를 보내주세요! : https://www.linkedin.com/in/writedev/
  • Stark97
    오늘도 개발중입니다
    Stark97
  • 전체
    오늘
    어제
    • 분류 전체보기 (247)
      • 개발지식 (20)
        • 스레드(Thread) (8)
        • WEB, DB, GIT (3)
        • 디자인패턴 (8)
      • JAVA (21)
      • Spring (88)
        • Spring 기초 지식 (35)
        • Spring 설정 (6)
        • JPA (7)
        • Spring Security (17)
        • Spring에서 Java 활용하기 (8)
        • 테스트 코드 (15)
      • 아키텍처 (6)
      • MSA (15)
      • DDD (11)
      • gRPC (9)
      • Apache Kafka (18)
      • DevOps (23)
        • nGrinder (4)
        • Docker (1)
        • k8s (1)
        • 테라폼(Terraform) (12)
      • AWS (32)
        • ECS, ECR (14)
        • EC2 (2)
        • CodePipeline, CICD (8)
        • SNS, SQS (5)
        • RDS (2)
      • notion&obsidian (3)
      • AI 탐험대 (1)
      • 팀 Pulse (0)
  • 링크

    • notion기록
    • 깃허브
    • 링크드인
  • hELLO· Designed By정상우.v4.10.0
Stark97
Spring Boot 3.1 & Spring Security 6: 로그인 프로세스 및 JWT 토큰 동작 설명 (10편)
상단으로

티스토리툴바