Posts [Backend] JWT와 OAuth의 관계
Post
Cancel

[Backend] JWT와 OAuth의 관계

JWT와 OAuth를 한 번에 접하게 되면서 두 가지의 개념을 명확하게 정리하고 싶어졌다.

쉽게 표현하면 JWT는 토큰의 종류이고, OAuth는 토큰을 발급하고 인증하는 오픈 스탠다드 프로토콜이다.

기존의 /outh/token endpoint에 의해 발급되는 모든 토큰은 일종의 OAuth 프레임워크에 의해 관리된다고 볼 수 있다.

1
2
3
4
5
6
{
	"token_type":"bearer",
	"access_token":"eyJ0eXAiOiJKV1QiLCJh",
	"expires_in":20,
	"refresh_token":"fdb8fdbecf1d03ce5e6125c067733c0d51de209c"
}

구글로 로그인을 수행하면 내가 구축한 서버에서는 구글로부터 다음과 같은 accessToken객체를 얻을 수 있다.

위의 토큰은 기존 OAuth에서 주로 사용하는 bearer라는 토큰의 일종이다. bearer 토큰은 유저 정보와 같은 명확한 정보를 가지고 있지 않는 토큰이다. 이 bearer 토큰이 가지고 있는 정보는 랜덤한 문자열인데 일종의 pointer와 같은 개념이라 생각할 수 있다. 구글 로그인을 진행하며 받은 위의 토큰을 통해 다시 구글 서버로 API요청을 보내야만 회원의 정보를 받아올 수 있는 것이다.

JWT는 토큰 자체에 유저 정보를 담고 있기 때문에 HTTP 헤더에 실어 전달함으로써 유저 세션을 유지할 필요가 없고 가볍게 데이터를 주고받을 수 있다는 장점이 있다.

출처

This post is licensed under CC BY 4.0 by the author.