/* GET home page. */ router.get('/', function(req, res, next) { res.type('html'); var privateKey = fs.readFileSync(process.cwd()+'//public//private.key'); var token = jwt.sign({ user: 'user' }, privateKey, { algorithm: 'RS256' }); res.cookie('auth',token); res.end('where is flag?');
});
router.post('/',function(req,res,next){ var flag="flag_here"; res.type('html'); var auth = req.cookies.auth; var cert = fs.readFileSync(process.cwd()+'//public/public.key'); // get public key jwt.verify(auth, cert, function(err, decoded) { if(decoded.user==='admin'){ res.end(flag); }else{ res.end('you are not admin'); } }); });
jwt(JSON Web Token)是一串json格式的字符串,由服务端用加密算法对信息签名来保证其完整性和不可伪造。Token里可以包含所有必要信息,这样服务端就无需保存任何关于用户或会话的信息,JWT可用于身份认证、会话状态维持、信息交换等。它的出现是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。