• Home
  • About
    • Monu Kim photo

      Monu Kim

      Strike while the iron is hot

    • Learn More
    • Email
    • Instagram
    • Github
  • Posts
    • All Posts
    • All Tags
    • All Categories
  • Projects

OAuth, JWT

16 Aug 2022

Reading time ~1 minute

JWT

Json Web Token, 모바일이나 웹 사용자 인증을 위해 사용하는 암호화된 Json 토큰이다.

  • Base64url 인코딩되어 표현된다.
  • self-contained 방식으로 정보를 전달한다.
  • JWT 토큰을 HTTP 헤더에 실어 서버가 사용자를 식별한다.

구조

Header.Payload.Signature로 .으로 구분되는 세 파트로 표현된다.

  • Header : JWT에서 사용되는 타입과 해시 암호화 알고리즘의 종류가 담겨있다.
  • Payload : claim(속성 정보)을 포함한다.
    • 클레임은 registered, public, private 세 종류가 있다.
    • 클레임은 key-value 쌍으로 구성되었다.
  • Signature : 시크릿을 포함해 암호화되어있다.

인증방식

  1. 사용자 ID,password 입력 로그인
  2. 서버는 요청 확인후 secret key 통해 access token 발급
  3. JWT 토큰을 클라이언트에 전달
  4. 클라이언트가 API를 요청할때 authorization header에 access token 포함
  5. 서버는 JWT signature을 체크하고 Payload로 사용자 정보를 확인해 데이터 반환

장단점

  • 장점
    • 별도의 저장소가 필요없다.
    • 다른 로그인 시스템에 접근 및 권한 공유가 가능하다.
  • 단점
    • 토큰의 길이가 길어 요청이 많아지면 네트워크에 부하를 일으킬 수 있다.
    • 토큰 탈취의 위험성이 있다.

OAuth

인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.

제각기인 인증방식을 표준화했다. OAuth 인증을 공유하는 애플리케이션끼리는 별도의 인증이 필요없어 여러 애플리케이션을 통합하여 사용하는 것이 가능하다.

인증 방식

  1. request token 요청, 발급
  2. 사용자 인증 페이지 호출
  3. 사용자 로그인 완료
  4. 사용자의 권한 요청 및 수락
  5. Access token 발급
  6. Access token을 이용해 서비스 정보 요청
  7. Access token 검증, 서비스 제공

OAuth 2.0 구성

  • resource owner : 사용자
  • resource server : 구글, 페이스북, 트위터 등 OAuth 제공자
  • client : 리소스 서버에서 제공하는 자원을 사용하는 애플리케이션
  • authorization server : 사용자 동의를 받아 권한을 부여 및 관리하는 서버

JWT vs OAuth

  • JWT : 토큰의 한 종류
  • OAuth : 토큰을 발급하고 인증하는 오픈 스탠다드 프로토콜, framework


studyOAuth Share Tweet +1