ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] OAuth2와 JWT — 인증과 인가를 이해하는 올바른 시작점
    IT 2026. 1. 26. 17:54

    인증과 인가를 이해하는 올바른 시작점

    백엔드 개발을 하다보면! 즉 로그인 기능을 만들다보면 또는 인터넷에 로그인 기능 만들기라고 해보면 반드시 마주치는 단어들이 있습니다.

    OAuth2, JWT, Access Token, Refresh Token.이 개념들이 자주 등장하지만, 실제로는 서로 다른 문제를 해결하기 위해 만들어진 기술 입니다.

    그런데 많은 글과 강의에서 이 둘을 섞어서 설명하다 보니, 구조가 잘보이지 않습니다. 저 또한 많이 두개에 대해서 헷갈려합니다. 하지만 이블로그를 통해서 더 이상 헷갈리지 않는 개발자가 되어봅니다.

     

    먼저 짚고 가야 할 개념: 인증과 인가

    이 둘은 비슷해 보이지만 완전히 다릅니다.

     

    • 인증(Authentication): 너는 누구인가?
    • 인가(Authorization): 너는 무엇을 할 수 있는가?

    로그인 과정은 인증이고, 로그인 이후 특정 API를 호출할 수 있는지는 인가의 문제입니다.

    OAuth2는 이 중 인가에 초점을 둔 표준이고, JWT는 이 과정에서 자주 사용되는 토큰 표현 방식입니다.

     

    OAuth2는 무엇을 해결하려고 나왔을까

    OAuth2는 한 문장으로 요약하면 이렇습니다. "비밀번호를 주지 않고도, 권한을 위임할 수 없을까?"

    과거에는 외부 서비스 연동을 하려면 아이디와 비밀번호를 직접 넘기는 방식이 많았습니다. 하지만 이 방식은 매우 위험했습니다.

    OAuth2는 이 문제를 이렇게 해결합니다.

    • 사용자는 서비스 A에 로그인한다
    • 서비스 A는 서비스 B에게
    • “이 사용자의 일부 권한만 위임”한다

    즉, 신원 확인은 인증 서버가, 권한 사용은 리소스 서버가 담당하는 구조입니다.

     

    OAuth2의 주요 구성 요소

    OAuth2를 이해하려면 용어부터 정리해야 합니다.

    • Resource Owner: 사용자
    • Client: 권한을 요청하는 애플리케이션
    • Authorization Server: 토큰을 발급하는 서버
    • Resource Server: 실제 자원을 제공하는 서버

    OAuth2는 이 네 역할 사이의 권한 위임 흐름을 표준화한 것입니다.

     

    Access Token과 Refresh Token

    OAuth2에서 가장 핵심적인 결과물은 토큰입니다.

    • Access Token: 실제 API 요청에 사용
    • Refresh Token: Access Token을 재발급하기 위해 사용

    Access Token은 보통 짧은 수명을 가집니다. 탈취되었을 때 피해를 최소화하기 위함입니다.

    Refresh Token은 더 긴 수명을 가지지만, 훨씬 더 조심스럽게 다뤄야 합니다.

     

    JWT는 무엇인가

    JWT(JSON Web Token)는 토큰의 한 형식입니다. OAuth2의 필수 요소는 아닙니다.

    JWT는 다음과 같은 특징을 가집니다.

    • JSON 기반
    • 서명 가능
    • 자체적으로 정보를 포함

    JWT는 토큰 안에 사용자 정보와 권한을 담을 수 있기 때문에, 서버가 상태를 저장하지 않아도 되는 구조를 만들 수 있습니다.

     

    JWT의 구조

    JWT는 세 부분으로 나뉩니다.

    • Header: 알고리즘과 타입
    • Payload: 실제 데이터
    • Signature: 위변조 방지 서명

    이 구조 덕분에 서버는 토큰을 받았을 때, 별도의 저장소 조회 없이도 토큰의 유효성을 검증할 수 있습니다.

     

    왜 JWT를 Access Token으로 사용할까

    OAuth2의 Access Token은 형식이 정해져 있지 않습니다. 그중 JWT가 자주 선택되는 이유는 명확합니다.

    • 빠른 검증
    • 서버 확장에 유리
    • 세션 저장소 불필요

    특히 마이크로서비스 환경에서는 JWT 기반 토큰이 큰 장점을 가집니다.

     

    JWT의 단점과 오해

    JWT는 만능이 아닙니다.

    • 토큰 폐기가 어렵다
    • 토큰 크기가 크다
    • Payload는 암호화되지 않는다

    그래서 JWT를 사용할 때는 반드시 다음을 고려해야 합니다.

    • Access Token은 짧게
    • Refresh Token은 안전하게
    • 민감한 정보는 담지 않는다

     

    OAuth2와 JWT를 함께 볼 때의 올바른 그림

    정리하면 이렇습니다.

    • OAuth2는 권한 위임을 위한 프로토콜이고
    • JWT는 토큰을 표현하는 한 가지 방식입니다

    OAuth2 없이 JWT만 쓰는 경우도 있고, OAuth2를 쓰되 JWT를 사용하지 않는 경우도 있습니다.

    중요한 것은 기술 이름이 아니라, 현재 시스템이 어떤 문제를 풀고 있는가입니다.

     

    마무리

    OAuth2와 JWT는 함께 등장하지만, 서로를 대체하지 않습니다.

    • OAuth2는 흐름이고
    • JWT는 도구입니다

    이 차이를 이해하면, 인증과 인가 구조를 설계할 때 더 이상 막연하지 않게 됩니다.

     

Designed by Tistory.