[UMC 10주차] JWT 적용 키워드

유보라·2022년 5월 27일
0

UMC 2기

목록 보기
14/14

핵심 키워드

Paging

paging이란 page 처리를 해주는 것을 말하는데, 쉽게 말해 데이터 양을 잘라서 출력하는 것이다.

구글에 어떤 검색어를 입력했을 때, 엄청 많은 결과가 나올 것이다.

이때 모든 결과를 한 페이지에 담으려고 하면 페이지의 크기도 너무 커지고 로딩 시간도 길어질 것이다.

그래서 paging을 이용하여 한 페이지에 나오는 데이터의 양을 제한한다.

예를 들어, 데이터 베이스에서 아래 코드를 실행시켰을 때,

SELECT *
FROM User
LIMIT 0,5;

1페이지에는 idx 0부터 5개의 데이터를 출력해준다.

이때 시작 데이터의 idx를 offset이라고 한다.

Transaction

Transaction이란 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위를 말한다.

은행에서 송금을 할 때를 생각해보자.
A에서 출금 하여 B에게 보내려는데, 출금만 된 시점에서 에러가 발생한다면 A의 돈이 공중분해 된다.
그래서 출금과 입금 자체를 하나의 단위로 만들고, 둘 다 무사히 실행되었을 때 데이터 베이스의 상태가 변화 되게 된다.


이때 commitrollback 연산은 transaction의 성공과 취소를 반영하는 명령어이다.
트랜잭션 안의 여러개의 연산을 수행하고 있는 상태가 Active 상태이다.
위에서 부분 완료는 명령어 중 몇 개만 성공했다는 뜻이 아니라, 모든 명령어를 성공한 후 commit을 하기 직전의 상태를 말한다.

  • 원자성 : 하나의 작업단위로 여겨진 모든 명령은 전부 수행되거나, 전부 수행되지 않아야 함.
  • 일관성 : A가 B에게 송금하기 전과 후의 잔액의 합은 같아야 함.
  • 고립성 : A가 B에게 송금하는 트랜잭션이 진행되는 도중에 다른 트랜잭션이 해당 데이터에 접근을 못하도록 해야함.
  • 지속성 : 트랜잭션이 성공한 후라면, 컴퓨터가 꺼져버린다고 해도 그대로 보존 됨. 중간에 꺼졌다면 보존 안됨.

출처: https://mommoo.tistory.com/62 [개발자로 홀로 서기:티스토리]

Stateless(무상태성)

HTTP 프로토콜은 요청에 대한 응답을 수행할 뿐, 특정 상태를 저장하지 않는다.

이것을 stateless라고 한다. 다른 예로는 UDP가 있다.

stateless 형태의 경우 로그인을 한다고 해도 로그인을 한 순간 딱 한 번만 로그인이 입증 되고, 그 후에는 상태를 저장하지 않기 때문에 로그인이 유지되지 않는다.

그러나 우리가 사용하는 어플리케이션에서는 로그인이 유지되어야 하기 때문에 여러가지 방법을 써서 상태를 저장한다.

쿠키 vs 세션

그 중 한 가지 방법이 쿠키와 세션을 이용하는 것이다.

쿠키(Cookie)는 웹 사이트에 접속할 때 생성되는 정보를 담은 임시 파일!
서버가 사용자의 웹 브라우저에 저장하는 데이터를 말한다.
즉, 쿠키는 사용자가 가지고 있다가 사용자가 요청을 할 때 쿠키 정보를 함께 보내서 사용자를 식별할 수 있게 한다.

세션(Session)은 웹 브라우저 당 1개씩 생성되며 웹 컨테이너에 저장되어 브라우저 종료 시 함께 소멸된다.
쿠키와 달리 세션은 서버가 가지고 있는다. 서버의 쿠키라고 생각할 수 있다.
ID, 닉네임 등을 세션에 담아두면 요청이 있을 때마다 DB에 접근하지 않아도 되기 때문에 효율적이다!

출처 : https://devuna.tistory.com/23

JWT(Json Web Token)

또 다른 방법은 JWT를 이용하는 것이다.

JWT는 유저를 인증하고 식별하기 위한 토큰 기반 인증 방법이다.
이 토큰에는 사용자의 권한 정보나 서비스를 이용하기 위한 정보가 담겨있다.

Header(인코딩 방식), Payload(사용자의 정보), Signature(전자 서명 즉, 암호화 된 키)로 구성된다.

토큰은 클라이언트에 저장되기 때문에 메모리나 스토리지 등을 통해 세션을 관리하던 서버의 부담을 덜 수 있다.

  • JWT의 일반적인 로직
  1. 클라이언트 측에서 아이디, 패스워드를 통해 인증
  2. 서버에서 JWT를 생성하여 클라이언트에게 응답으로 돌려줌
  3. 클라이언트는 이제 어떤 요청을 할 때마다 헤더에 JWT를 첨부함
  4. 서버에서 클라이언트가 보낸 JWT를 검증하고 응답

다만 보안이 취약해서 HTTPS가 필수로 요구된다.

OAuth 원리와 과정

OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는 프로토콜이다.

쉽게 설명하자면, 카카오 계정으로 로그인 등과 같이 간편히 회원가입 할 수 있는 기능을 구현할 때 사용되는 프로토콜이다.

보안이 좋지만 복잡한 과정을 가지고 있다.

설명을 찾아보다가, 설명이 정말 잘 되어 있는 블로그를 찾아서 아래 링크를 첨부한다.

출처: https://inpa.tistory.com/entry/WEB-📚-OAuth-20-개념-💯-정리

profile
인하대학교 컴퓨터공학과 학생입니다😀

0개의 댓글