💻 Backend

무상태성 / JWT / Oauth란?

미미누 2021. 11. 21. 21:52

무상태성(stateless): 시스템이 현재의 상태를 나타내는 데이터를 보유하지 않고, 단지 입력 내용에 따라 출력 내용이 결정되는 방식을 의미합니다.

 

세션을 통한 인증의 경우)

클라이언트, 서버, 세션 저장소가 사용자의 정보를 가지고 있다는 것은 상태성을 가지고 있음 → 원래 무상태성을 기초로 해야함.

 

즉, 무상태성을 지니는 시스템은 같은 입력에 대해 언제나 같은 출력을 하게 됩니다.

REST API는 서버로의 요청(reqeust)이나 클라이언트로의 응답(response)이 모두 무상태성입니다.


  1. Request Header 활용하기

Request Header: 클라이언트 자체에 대한 자세한 정보를 포함하는 헤더

client - Server - DB

로그인 하려면 이런식으로 로그인 요청(클라이언트에서 서버)

 

네이버에 로그인 하는 경우)

http://user(아이디):1q2w3e!(비번)@www.naver.com

***Base64***란 Binary Data를 Text로 바꾸는 Encoding

 

파싱은 어떤 페이지(문서, html 등)에서 내가 원하는 데이터를 특정 패턴이나 순서로 추출해 가공하는 것

Base 64로 인코딩할때, 파싱한 뒤에, 인코딩하여 문자열로 만들어주고 보내준다.

Request Header만 활용 할 시 문제점

매번 인증해야 한다.

예시)

  1. 글을 쓸 때 매번 인증해야 되니까 번거로움
  2. 글을 수정할 때 매번 인증해야 하니 번거로움

**쿠키(Cookie)**란 인터넷 사용자가 어떠한 웹 사이트를 방문할 경우, 그 사이트의 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일

쿠키에 담긴 정보는 인터넷 사용자가 같은 웹사이트를 방문할 때마다 읽히고, 수시로 새로운 정보로 바뀐다.

  • Session Cookie : 보통 만료시간(Expire date) 설정하고 메모리에만 저장되며 브라우저 종료 시 쿠키를 삭제한다.
  • Persistent Cookie : 장기간 유지되는 쿠키파일로 저장되어 브라우저 종료와 관계없이 사용한다.
  • Secure Cookie : HTTPS에서만 사용, 쿠키 정보가 암호화되어 전송한다.
  • Third-Party Cookie : 방문한 도메인과 다른 도메인의 쿠키, 광고 배너 등을 관리할 때 유입 경로를 추적하기 위해 사용한다
  • 간단히 말해 사용자가 방문한 웹사이트가 아닌, 다른 웹사이트 (제 3자)에서 발행한 쿠키 파일을 말한다. 보통 광고 서버에서 발행하는 쿠키

JWT(Json Web Token)란 Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Web Token

JWT는 토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 안전하게 전달

JWT는 Header, Payload, Signature의 3 부분으로 이루어지며, Json 형태인 각 부분은 Base64로 인코딩 되어 표현된다.


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

 

사용자 인증을 위해 facebook, apple 사용자 인증 방식 사용, 제 3자 서비스(원티드)는 외부 서비스(Facebook, Apple, Google)의 특정 자원을 접근 및 사용할 수 있는 권한을 인가받음

 

OAuth 동작에 관여하는 참여자

Resource Server : Client가 제어하고자 하는 자원을 보유하고 있는 서버입니다. (Facebook, Google, Twitter)

Resource Owner : 자원의 소유자입니다. (로그인 하는 실제 유저)

Client : Resource Server에 접속해서 정보를 가져오고자 하는 클라이언트 (웹 어플리케이션)