JWT와 OAuth

Kyoungmoon Kim·2022년 8월 4일
0

OAuth2.0란?

외부서비스의 인증 및 권한부여를 관리하는 프레임워크입니다!
→ Open Authentication, Open Authorization라고 해요. (인증과 허가를 포함해요!)

OAuth 동작 방식 (간단 ver.)

  1. 클라이언트서버 사이에 인증(로그인)을 하면 서버가 access_token 을 줍니다.
  2. 클라이언트access_token을 이용해서 API 요청을 할 수 있어요.
  3. 서버는 API 요청을 받고, access_token을 가지고 권한이 있나 없나 확인해서 결과를 클라이언트에 보내줍니다.

OAuth 동작 방식 (외부 서비스 엮음 ver.)

👉 유저가 구글 로그인을 하는 상황이라고 가정하고 생각해봅시다!

여기서 구글유저의 정보도 가지고 있을거고, 로그인을 검증도 해줄거예요.
그러니까 구글은 Resource Server(자원 서버) + Authorization server(권한 서버)입니다.
유저는 그 정보를 가진 사람이니 Resource Owner(자원 소유자)라고 부릅니다.
(구글에서 주는 유저 정보는 Resource(자원)이라고 부릅니다.)

  1. 유저가 구글 로그인을 합니다.
  • 자원 소유자가 자원서버에 권한 요청을 한거죠!
  1. 구글은 로그인할 때 유저가 입력한 정보(아이디, 비밀번호 등)을 보고 클라이언트(우리 웹사이트!)에 접근 권한을 줍니다.
  2. 클라이언트는 이 권한을 가지고 Authorization server(권한 서버)access_token을 요청합니다.
  3. 클라이언트는 이 access_token을 가지고 구글에서 유저 정보를 가져올 수 있어요.
  4. 구글클라이언트가 보낸 access_token을 가지고 권한이 있나 없나 확인해서 결과클라이언트에 보내줍니다.

JWT란?

토큰의 한 형식입니다! 데이터가 JSON 형태로 이루어져 있는 토큰이에요.

  • 생김새 : [header].[payload(내용)].[signature(서명)]
    • header: 토큰 타입과 암호화 방식 정보가 들어갑니다.
    • payload: 토큰에 담을 정보가 name: value 쌍으로 들어갑니다.
    • signature: 서명 정보입니다. secret key를 포함해서 header와 payload 정보가 암호화 되어 들어갑니다.
  • 동작 방식 : 토큰 기반 동작 방식대로 움직여요!
    • 유저가 로그인을 시도하면,
    • 서버가 요청을 확인하고 secret key를 가지고 access_token을 발급합니다.
    • 클라이언트에 JWT를 전달하고
    • 클라이언트는 API 요청을 할 때 Authorization header에 JWT를 담아서 보냅니다.
    • 서버는 JWT의 서명을 확인하고 payload에서 정보를 확인해서 API 응답을 보냅니다.
profile
프론트 개발 공부를 정리한 블로그입니다.

0개의 댓글