풀스택 웹개발 부트캠프 7주차 (2)

syxxne·2023년 8월 25일
0

부트캠프

목록 보기
18/42

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
// controller
const jwt = require("jsonwebtoken");

local host vs local storage

  • localhost : 브라우저가 닫혀도 정보가 남아있음
  • localstorage : 브라우저가 닫히면 정보도 날아감

0개의 댓글