개발하다가 로그인하면 발생하는 jwt token을 항상 요청이 있는 api의 미들웨어로 처리하다가 이번에는 socketio를 통해서 통신할때 token을 복호화를 하는 일이 생겼다.
atob이라는 Base64를 통해서 암호화한 코드를 복호화할 수 있는 함수를 알아냈다.
const atob = require('atob')
function parseJwt (token) {
var base64Url = token.split('.')[1];
var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
var jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
return JSON.parse(jsonPayload);
};
어떤 Payload를 썼는지까지 알 수 있는 함수이기 때문에 조심히 사용해야 할 것 같다.