Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

박대경 5주차 과제 제출 #16

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions daekyeong.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
## 사용자 관점에서의 로그인 과정 흐름
- 로그인에 성공하고 실패하는 순간까지의 과정
- 로그인에 성공
1. ID와 PW를 입력하여 MemberController에서 "/login"을 통해 서버에 전달
2. MemberSerivce의 login() 메서드 호출
3. login() 메서드에서 MemberReqDto와 MemberLoginResDto를 활용하여 회원의 ID, PW 일치여부 확인
4. PW는 데이터베이스에 저장되어있는 암호화된 PW와 입력한 PW를 암호화하여 비교, 일치여부 판단
5. 정보가 일치할 경우 세션을 생성 및 인증여부를 SecurityContext 객체에 전달
6. SecurityContext 객체에 전달된 내용을 세션에 저장

- 로그인에 실패
1. ID와 PW를 입력하여 MemberController에서 "/login"을 통해 서버에 전달
2. MemberSerivce의 login() 메서드 호출
3. login() 메서드에서 MemberReqDto와 MemberLoginResDto를 활용하여 회원의 ID, PW 일치여부 확인
4. ID가 일치하지 않는 경우 IllegalArgumentException - "회원 정보를 찾을 수 없습니다" 오류 반환
5. PW가 일치하지 않는 경우 IllegalStateException - "비밀번호가 일치하지 않습니다" 오류 반환

- 로그인 성공 후 사용자에게 제공되는 경험, '로그인 유지'가 어떻게 사용자 관점에서 나타나는지
- 로그인에 성공하게 되면 사용자는 주어진 권한을 활용해 다양한 리소스에 접근이 가능
- 새로고침 및 다른 페이지로 이동하여도 로그인이 계속 유지됨

## 서버가 로그인한 사용자를 인식하는 방식
- 로그인한 사용자를 지속적으로 인식하기 위해 쿠키와 세션이 어떻게 사용되는지
1. 서버는 사용자가 로그인할 때 세션을 생성하고 쿠키에 담아 전달하는데, 이때 'JSESSIONID' 라는 이름의 쿠키를 생성
2. 쿠키에 담긴 세션이 만료되기 전까지 서버가 api를 호출할때마다 세션을 조회하고 사용자의 정보를 확인

- 세션 기반 로그인에서의 쿠키의 역할
세션 기반 로그인에서는 쿠키가 세션을 담아 보관하는 역할
쿠키에 저장된 데이터를 통해 사용자의 로그인 상태를 쉽게 관리 가능

- 세션 ID가 쿠키에 저장되어 클라이언트와 서버 간에 전달되는 과정
세션은 쿠키에 ID,PW와 같은 인증 정보가 아닌 'JSESSIONID'라는 식별자를 저장
클라이언트에 세션이 담긴 쿠키를 저장, 클라이언트에서 서버로 쿠키 전달, 식별자를 통해 사용자의 세션 식별

## 세션을 구현할 때 보안적으로 고려해야 할 부분
1. HttpOnly 설정
JavaScript를 통한 쿠키 접근 차단, XSS 공격을 완화하여 쿠키나 세션 토큰 등 민감한 정보 탈취 방어
2. Max-Age 설정
쿠키가 만료할때까지의 시간을 설정, 다른 사용자의 쿠키 접근 위험을 방지
3. Path 설정
브라우저가 쿠키를 전송하기 위해 요청된 경로 설정, 해당 경로에만 쿠키를 전송할 수 있어
비효율적으로 쿠키가 여러 값을 전달하거나 쿠키 이름이 충돌하는 경우를 방지