일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 블록체인 #layer2 #레이어2 #이더리움스케일링
- html #js #parsing
- 자료구조 #알고리즘
- #국제채권시장 #유로본드 #유로커런시 #유로달러 #외국채 #금융중개기관 #간접금융 #거래비용#다우존스공업평균지수 #나스닥종합지수 #FTSE100 #DAX #CAC40 #straittimes #항생지수 #거래비용 #유동성 #위
- 페이스북유니버시티 #마케팅교육 #마케팅캠프
- #경제상식 #화폐 #금융 #화폐금융론 #경제학 #경제기본 #경제지식 #경제근육 #투자지식 #경제공부 #경제학전공 #금융이란 #화폐란 #금융시장 #금융시장역할 #화폐역할 #화폐역기능 #금융역기능 #
- vp #vc #did #신원인증 #블록체인
- 미쉬킨의화폐와금융 #미쉬킨 #화폐금융론 #화폐와금융 #경제학 #교양 #경제지식 #경제공부
Archives
- Today
- Total
평행우주 : world 1
[인증 | 보안] Session-based Authentication 본문
세션기반 인증
로그인
- 서버가 인증(Authentication)에 성공했다고 판단한 이후,
- 인증을 필요로 하는 작업(그림에서와 같이, 장바구니에 물품 추가)을 요청할 때,
- 서버는 아이디 및 비밀번호의 해시를 이미 알고 있기 때문에,
- ("인증에 성공했음"을 서버가 알고 있다면)매번 로그인할 필요가 없을 것
인증에 따라 리소스의 접근 권한(Authorization)이 달라진다
서버와 클라이언트에 각각 필요한 것
- 서버는 사용자가 인증에 성공했음을 알고 있어야 한다
- 클라이언트는 인증 성공을 증명할 수단을 갖고 있어야 한다.
+) 보충 설명
- 사용자가 인증에 성공한 상태가 세션
- 서버는 일종의 저장소에 세션을 저장. (그림 2) 주로 in-memory,
- 또는 세션 스토어(redis 등과 같은 트랜잭션이 빠른 DB)에 저장
- 세션이 만들어지면, 각 세션을 구분할 수 있는 세션 아이디도 만들어진다(그림 3),
- 보통 클라이언트에 세션 성공을 증명할 수단으로써 세션 아이디를 전달한다 (그림 4)
이때 웹사이트에서 로그인을 유지하기 위한 수단으로 쿠키를 사용.
쿠키에는 서버에서 발급한 세션 아이디 저장
- 쿠키를 통해 유효한 세션 아이디가 서버에 전달되고, (그림 5)
- 세션 스토어에 해당 세션이 존재한다면 (그림 6)
- 서버는 해당 요청에 접근 가능하다고 판단(그림 7,8)
- 하지만 쿠키에 세션 아이디 정보가 없는 경우,
- 서버는 해당 요청이 인증되지 않았음을 알려준다
로그아웃
세션 아이디가 담긴 쿠키는 클라이언트에 저장되고,
서버는 세션을 저장한다.
서버는 그저 세션 아이디로만 요청을 판단
주의: 쿠키는 세션 아이디, 즉 인증 성공에 대한 증명을 갖고 있으므로, 탈취될 경우 서버는 해당 요청이 인증된 사용자의 요청이라고 판단합니다. 이것이, 우리가 공공 PC에서 로그아웃해야 하는 이유
로그아웃 작업
- 서버의 세션 정보 삭제
- 클라이언트의 쿠키 갱신
서버가 클라이언트의 쿠키를 임의로 삭제할 수는 없음.
대신, set-cookie로 세션 아이디의 키값을 무효한 값으로 갱신
express-session
- 이런 세션을 대신 관리해주는 'express-session' 이라는 모듈 존재
- 'express-session'은 세션을 위한 미들웨어로, 'Express'에서 세션을 다룰 수 있는 공간을 보다 쉽게 만든다.
- 또한 필요한 경우 세션 아이디를 쿠키에 저장하고,
- 해당 세션 아이디에 종속되는 고유한 세션 객체를 서버 메모리에 저장
- 이때 세션 객체는 서로 독립적인 객체이므로 각각 다른 데이터 저장 가능
- req.session이 바로 세션 객체이며 req.session은 세션 객체에 세션 데이터를 저장하거나 불러오기 위해 사용
'텃밭 3 : BE > 인증 | 보안' 카테고리의 다른 글
[인증 | 보안] Token-based Authentication , JWT (0) | 2022.02.18 |
---|---|
[실습 | 인증 보안] sprint-auth-session (0) | 2022.02.17 |
[인증 | 보안] Cookie (0) | 2022.02.17 |
[인증 | 보안] HTTPS 프로토콜 개념과 서버 구현 방법 (0) | 2022.02.17 |
Comments