[Server] OAuth & JWT

Serin Yoon·2021년 1월 20일
2

Backend

목록 보기
2/5
post-thumbnail

1. OAuth

1) 개념: 제한적으로 권한을 요청해 사용할 수 있는 키를 발급해주는 방식

2) 사용하는 토큰

  • Access Token
    • 사용자의 데이터에 접근하기 위해 필요한 토큰
    • 사용자가 특정 앱에 부여한 권한에 대한 정보가 담긴 문자열
    • 접근할 수 있는 특정 scope 등 사용자가 동의한 사항에 대한 정보 담김
  • Refresh Token
    • Access Token이 노출되어 통제된 데이터에 접근 가능해지는 것을 대비하여 Access Token의 유효기간을 짧게 설정하고, 만료된 경우 사용하는 토큰

3) 작동 방식

4) 장단점

  • 장점: Session, Cookie에 비해 보안이 좋음 (특정 데이터에만 권한이 있으므로 그 외 정보 요구할 수 없기 때문)
  • 단점: 구현이 어렵고, 높은 cost가 요구됨. 서비스 규모가 큰 경우 permission list를 많이 만들어야 함.

2. JWT(JSON Web Token)

1) 개념: 인증에 필요한 정보를 암호화시킨 토큰

2) 구성 요소

  • 헤더(Header)
    • 토큰 타입(JWT)과 해시 암호화 알고리즘(HMAC, SHA256, RSA 등)으로 구성됨
  • 페이로드(Payload): 토큰에 담을 Claim 정보 포함
    • Claim: Payload에 담는 정보의 한 조각. name-value 쌍으로 구성됨
  • 서명(Signature)
    • secret key를 포함하여 암호화되어 있음

3) 작동 방식

(1) Client → Server
클라이언트가 처음으로 서버에게 요청 전송

(2) Server → Client
서버가 secret key를 통해 access token 발급하고 클라이언트에게 JWT token 전달

(3) Client → Server
발급된 access token 저장하고, 요청 보낼 때마다 헤더에 access token을 포함하여 같이 보냄

(4) Server → Client
secret key를 통해 token 복호화하여 검증하고, 검증 완료되면 요청에 대한 응답 전달

profile
티스토리로 이사했습니다 🏠

0개의 댓글