OAuth
- Open Authorization
- 서드파티 어플리케이션이 사용자의 계정에 접근할 수 있는 권한을 부여하기 위한 프로토콜
OAuth 1.0
- 서드파티 어플리케이션이 사용자의 데이터에 접근할 권한을 얻기 위해 서명된 요청 사용
- 요청의 서명 부분은 어플리케이션의 비밀 키와 사용자의 토큰을 조합하여 생성되며, 이를 통해 보안 유지
OAuth 2.0
- 1.0보다 간편하고 확장성 있는 버전
- 기본적으로 인증과 권한을 분리하여 다루는 것이 특징
- Access Token을 통해 권한을 부여하고, 사용자의 실제 비밀 정보를 공유하지 않음
- JWT Bearer Token 인증
- OAuth 2.0에서는 Bearer Token 인증 방식을 지원
- JWT를 Bearer Token으로 사용할 수 있음
- 클라이언트가 발급받은 JWT를 "Authorization" 헤더에 담아 요청을 보내면, 서버는 해당 JWT의 유효성을 검사하여 권한을 부여
JWT
- JSON Web Token
- 웹 어플리케이션에서 정보를 안전하게 전송하기 위한 간단한 방법
- 인증된 사용자를 식별하거나 데이터에 서명을 하여 변조를 방지하는 데 사용
JWT 구성
- Header : 토큰의 타입, 해시 알고리즘 정보 포함
- Payload : 실제 정보 데이터가 포함되며, 클레임 (claim) 이라 불리는 키-값 쌍으로 이루어져 있음
- Signature : 토큰의 무결성을 검증하기 위한 서명 부분으로, Header와 Payload의 조합에 비밀 키를 사용해 생성
JWT 함수
- sign : 서버 측에서 JWT를 생성할 때 사용
jwt.sign(payload, secretOrPrivatekey, [options, callback]);
- verify : 클라이언트나 서버에서 받은 JWT의 유효성을 검증할 때 사용
jwt.verify(token, secretOrPublicKey, [options, callback]);
JWT 설치 & 사용
npm i jsonwebtoken
const jwt = require("jsonwebtoken");
local host vs local storage
- localhost : 브라우저가 닫혀도 정보가 남아있음
- localstorage : 브라우저가 닫히면 정보도 날아감