반응형

1. 쿠키

    ˙ 사용자가 특정 웹 사이트에 접속할 때, 사용자의 컴퓨터에 저장하는 기록 파일

    ˙ ex) 로그인 시 ID와 PW 저장을 체크한 후 사이트 재접속 시 ID/PW를 기억하는 기능

 

2. 세션

    ˙ 서버에서 가지고 있는 객체(Object)로써, 특정 사용자의 로그인 정보를 유지하기 위해 사용하는 기술
    ˙  서버는 접속한 클라이언트에게 세션ID와 회원정보를 매핑하여 기록하고 Session ID를 부여하면,
    ˙  사용자는 접속할 때마다 발급받은 Session ID와 함께 요청(Request)한다.
    ˙  ex) 웹 사이트 로그인 후 다른 페이지 이동마다 접속 상태 유지하는 역할

 

    ① 장점

        - 개인정보가 포함되지 않은 세션ID(회원 식별 목적)를 사용자에게 제공하고, 회원 중요정보는 서버가 갖고 있음.

 

    ② 단점

        - 악의적인 공격자가 세션 ID를 탈취할 수 있음.

        - 웹 서버에서 세션 정보를 기록하고 있어야 하므로, 접속자가 많을 때 서버 메모리 부하 문제가 발생할 수 있음.

 

3. 세션과 쿠키의 관계

 

 

    ˙ 세션 ID는 일반적으로 쿠키에 저장되며, 세션 쿠키라고도 불린다.  

    ˙ 브라우저는 이 세션 쿠키를 갖고 있으면서 서버와의 상호 작용을 통해 세션 상태를 유지한다.

    ˙ 주로 사용되는 쿠키 타입은 HttpOnly 속성이 설정된 쿠키이며, JavaScript에서 쿠키에 접근하는 것을 방지하여 보안을 강화할 수 있다.
    ˙ SpringBoot에서도 세션 관리를 위한 설정이 가능하며, 세션 ID를 쿠키에 저장/유지하는 방식을 선택할 수 있다.

반응형
반응형

1. Session 기반 로그인 기능 구현 방법론

    ˙ 사용자의 세션을 유지하고, 세션에 로그인 상태를 저장한다.

    ˙ React에서는 세션 쿠키를 통해 세션 상태를 유지하고, Spring Boot에서는 세션 관리를 위한 기능을 제공한다.

    ˙ 로그인 시에 서버에서 세션을 생성하고, 로그아웃 시에 세션을 제거한다.

 

2. JWT(Json Web Token) 기반 로그인 기능 구현 방법론

    ˙ 사용자가 로그인하면 서버에서 토큰을 발급하고, 이 토큰을 사용하여 사용자를 인증한다.

    ˙ React에서는 토큰을 로컬 스토리지 또는 쿠키에 저장하고, Spring Boot에서는 토큰을 검증하여 인증한다.

    ˙ 토큰은 보통 사용자의 권한과 유효기간을 포함하고 있다.

 

    ˙ [장점]

        - 세션 기반 인증 방식에 비해 서버가 DB에 세션 정보를 갖고 있을 필요가 없음

        - 서버에서 상태 정보를 저장하지 않으므로, stateless가 유지됨

        - 토큰 기반이므로 서로 다른 웹 서버에서 동작할 수 있음

 

    ˙ [단점]

        - 세션에 비해 토큰 자체의 데이터 길이가 길다

        - payload는 암호화되지 않으므로 중요한 정보를 담기 부적절 함

        - 토큰을 탈취당한 경우 보안상 문제점 야기할 수 있음 (때문에, 일반적으로 토큰에 유효기간 부여)

Refresh Token을 이용하여 Access Token 재발급

 

3. Spring Security를 이용한 인증 및 권한 기능 구현 방법

    ˙ Spring Security를 사용하여 강력한 보안 기능을 구현한다.

    ˙ React에서는 SpringSecurity의 로그인 페이지를 호출하고, SpringBoot에서 인증하고 권한을 부여한다.

 

4. OAuth2를 이용한 소셜 로그인 기능 구현

    ˙ 소셜 미디어 플랫폼(구글, 페이스북, 카카오 등)의 OAuth2를 이용하여 로그인 기능을 구현한다.

    ˙ React에서는 OAuth2 클라이언트를 통해 플랫폼으로부터 토큰을 받아오고, SpringBoot에서 토큰을 인증한다.

 

OAuth2 인증 시퀀스다이어그램

 

- Resource Owner : 특정 서비스에 접속하려는 사용자

- Client : 웹 서비스 (Google, Kakao 등의 Resource Server 입장에서는 Client 역할)

- Resource Server : 사용자의 개인정보를 가지고 있는 서버(Google, Kakao 등)

- Authorization Server : 실질적으로 권한 부여 기능을 담당하는 서버

  사용자(Resource Owner)는 자신의 SNS 계정 정보(ID/PW)를 넘기면 Authorization Code를 받는다.

   Client는 사용자로부터 받은 Authorization Code를 넘기면 Access Token을 받는다.

 

 

최근 추세는 Token 기반 로그인(JWT)이나 OAuth2를 사용하는 것을 많이 선택하며, 

Spring Security와의 통합도 고려할 만하다.

반응형

+ Recent posts