JWT로 인증하고 로그인 하자.

Wony Lee·2024년 3월 16일
0
post-thumbnail

1.JWT란?

이번 프로젝트를 진행하면서, JWT (json web token)을 이용하여 로그인 기능을 구현하기로 하였다. 사실 이전 프로젝트에서도 로그인을 JWT를 사용하여 구현하였는데, 내가 담당한 것은 아니었고, 이에 대해서 JWT가 왜 쓰이는지에 대해서도 이해하지 못했다.
그래서 JWT가 왜 쓰이는지 정리하고, 내가 구현 방식을 나누려 한다.

JWT란 무엇인가?:
특정 정보를 가져오기 위한 인증 수단이다. 비유하자면, 자신이 누구인지를 증명하는 것이다.
예를 들어, 조선시대 암행어사가 업무를 보기 위해서 마패로 자신을 증명해야 한다.(마패는 역마와 역졸을 이용할 수 있는 권한이 있다.)

어사가 마패를 이용하여 탐관오리를 처단하 듯, 나도 JWT를 통해 유저 정보 등의 권한을 불러와야 한다.

JWT의 구조:

11111.22222.33333 이것을 토큰이라 하면,
Header(11111), Payload(22222), Signature(33333)로 되어있다.
1) Header : JWT라는 것을 증명 및 및 알고리즘 정의,
2) Payload : 어떤 내용이 있는지 알려줌
3) Signature : Header에서 정의한 알고리즘 방식을 활용함.

JWT 장단점

1) 장점 :

기존에는 웹에서 쿠키와 세션을 이용하여 사용자를 인증하였는데, JWT는 토큰 자체에 사용자의 정보가 저장되어 있어서 서버에서는 토큰을 검증만 해주면 된다.

2) 단점 :

토큰에 정보가 많아질수록 토큰의 길이가 늘어나 네트워크에 부담을 줄 수 있다. 또한, 토큰 자체를 탈취 당하면 대처하기가 어렵다.

정리하며

JWT를 사용하여 로그인 처리 하는 게, 별거 없어 보이는 것 같지만
JWT에 대해서 아무 것도 몰랐을 때, 기능을 구현하니 생각보다 어려웠다.

정말 내 스스로가 바보 같았던 것은, JWT가 무엇인지 정확히 정의를 보고 왜 필요한 것인지 알고 만들었다면, 구현하는 데에 조금은 쉬었을 텐데,
기능 구현 로직과 흐름도만 보고 만들어서, 시간이 조금 걸렸다.

모든 기능을 구현하기 전에, 어떤 도구를 사용하기 전에, 그 도구의 역사와 정의 등은 무조건 먼저 찾아보자!!
매번 다짐하지만, 순순히 자리잡고 있지 않아 걱정이다. 그래도 뽜이팅 하자. 계속 깨우치자.

profile
I can do it

0개의 댓글