본문 바로가기
Backend/Backend 관련 학습 내용

JWT 인증인가 token을 통한 로그인 기능 구현

by pjhcsol 2023. 11. 19.

https://velog.io/@chuu1019/Access-Token과-Refresh-Token이란-무엇이고-왜-필요할까

참조

 

 

백엔드는 앞으로의 유지보수와 확장성을 고려하여 MVC model view controller의 기능에 맞추어 제작하였고 그에따라 로그인도 여러 API와 서버 확장성과 보안성을 고려하여 JWT 인증인가 토큰 방식을 사용하였다.

 

기능1.

 

사용자보다는 host 유저의 노키즈존 사업장 등록이나 정보보안성과 서버확장성을 위하여 짧은 개발기간이지만 쿠키 또는 섹션을 사용한 소셜로그인 기능보다는 JWT를 사용한 후 확장이 맞다는 판단이 들었다.

session 로그인 방식의 문제점은 서버에 세션객체를 저장하여 사용자가 다수인 경우 부하가 높아진다. 

따라서 JWT 인증인가 토큰 방식을 사용한 회원가입 및 로그인 방식은 데이터의 위변조를 방지하고 다른 로그인 API과의 연동 및 확장성이 우수하다.

토큰 기반으로 다른 로그인 시스템에 접근 및 권한 공유가 가능하다.(쿠키와의 차이)

서버측 부하를 낮출 수 있고 독립적이기 때문에 능률적으로 접근 권한관리를 할 수 있고 분산/클라우드 기반 인프라 스트럭처에 잘 대응할 수 있다.

 

 

 

기능2.

DB에 공공데이터로 이루어진 더미 데이터를 insert 후

카테고리ID(1.노키즈존, 2.키즈존, 3.아동복합문화공간) DB를 통한 필터링 기능을 사용하여 구현하였다.

 

기능3.

카카오 지도 API 사용하여 현재 위치나 DB에서 받아온 정보를 토대로 위치를 지도상에 마커로 찍어 현재 위치와 대구 주변의 노키즈존 키즈존 문화복합공간의 위치를 특정해낼수있다.

 

 

JWT 인증인가 token을 통한 로그인 기능 구현

JWT (JSON Web Token) 인증에 필요한 정보들을 암호화시킨 토큰을 뜻한다.

 

JWT 기반 인증 방식이란 Client가 Server에게 요청을 보낼 때 HTTP의 Header에 이전에 Server로부터 발급받은 JWT를 담아 보내고, 이를 기반으로 Server가 Client를 식별하는 방식을 뜻한다.
클라이언트에서 패스워드를 통하지 않고 암호화된 token기반으로 로그인 성공여부를 파악하기때문에 보안성이 높다.

 

1-1. Signature 구현

header의 인코딩 값 + payload의 인코딩 값 + 서버의 key값 을 header에서 정의한 알고리즘으로 암호화한 것.
이 때 서버의 key값이 유출되지 않는 이상 복호화할 수 없다.

 

1-2. Access token

Client는 JWT를 저장하고, 이후 인증이 필요한 요청마다 Authorization Header에 Access token을 담아 보냄

[' . '로 구분된 세 문자열인 Header, Payload, Signature로 이루어져있다.] Server는 발행했던 token과 Client로부터 받은 token의 일치여부를 확인한다 (인증).

2. 카테고리ID(1.노키즈존, 2.키즈존, 3.아동복합문화공간) 별로 DB를 통한 필터링 기능

 

클라이언트 측에서 요청한 노키즈존, 키즈존, 아동복합문화공간을 카테고리ID 별로 필터링을 통해 원하는 정보를 전송해준다.