Node.js & TypeScript

Node.js JWT 기반으로 사용자 인증 알아보기

martinooo 2021. 10. 10. 11:53
728x170

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를 사용할 수 있습니다.

(참고 https://github.com/auth0/node-jsonwebtoken)

그리드형