Node.js & TypeScript
Node.js JWT 기반으로 사용자 인증 알아보기
martinooo
2021. 10. 10. 11:53
1. JWT(Json Web Token)
많은 웹 서비스들은 사용자 인증을 구현하기 위해서 쿠키와 세션을 이용해왔습니다.
그런데 쿠키와 세션에는 여러 문제(보안 등등)들이 있어서, 최근에는 OAuth와 JWT 같은 토큰 기반으로 사용자 인증 방식을 사용합니다.
OAuth 에 대해서?
OAuth는 쉽게 말해서 Facebook , Google 같이 다른 어플리케이션으로 사용자 인증을 인가한 것.
JWT 에 대해서?
JWT는 사용자 정보를 JSON객체에 담아 이를 암호화하고 해싱 작업을 거쳐 문자열 토큰을 생성하는 기술입니다.
클라이언트는 이 토큰을 HTTP Header에 추가하여 요청을 보냄으로써 사용자 인증을 얻게 됩니다.
JWT는 서버에 저장되지 않기 떄문에 서버 부하를 일으키지 않으면 , 해싱작업을 통해 데이터의 무결성을 보장하는 인증방식 입니다.
JWT 특징?
JWT의 가장 큰 특징은?
정보가 담긴 데이터를 암호화 하여 , HTTP 헤얻에 추가 시킨다는 것입니다.
===== 보안성 증가 (완벽하다는 것은 아닙니다)
권한을 부여하기 위해 필요한 데이터가 JWT안에 모두 담겨있습니다.
===== OAuth 처럼 인증 서버에서 토큰에 대한 정보를 찾을 필요가 없습니다.
JWT의 단점
보안이 완벽하지 않습니다.
또한 누군가 토큰은 해킹한다면 , 그 토큰을 활용해서 권한을 수행할 수 있다.
JWT는 많은 프로그래밍 언어에서 라이브러리로 지원하고 있으며,
NODE.JS에서도 jsonwebtoken 이라는 모듈을 제공합니다
이 모듈을 활용해서 JWT를 사용할 수 있습니다.