Tag: jwt

我想获得分配给用户的JSON Web令牌的用户信息

我试图创build一个只允许pipe理员查看页面的策略。 我已经在下面显示了这个策略,但是它并没有返回正确的用户。 module.exports = function (req, res, next) { User.findOne({ id: token.id }, function (err, user) { console.log(user); if (err) throw (err); if (user.permission === "admin") { return next(); } return res.send("You Must be an ADMIN to perform this task"); }); };

将令牌存储在浏览器中

问题=] 根据我的研究,在本地存储中存储networking令牌似乎是使用cookie来防止CSRF攻击的首选方法(我知道本地存储容易受到XSS攻击,尽pipe这些容易防止比CSRF容易)。 这就是说,我一直无法find任何关于利用本地存储这一手段的相关指南… 我正在寻找一些帮助,了解如何工作… 将服务器签名的令牌传递给浏览器本地存储的首选方法/工作stream程是什么? 一旦浏览器存储了令牌,我该如何使用那个存储的令牌。 我是否需要通过JS停止默认提交表单之类的东西,然后用每个请求的authorization: Bearer <token>头来发送AJAX请求? 当用户点击指向该用户拥有的资源的链接时,如何将该令牌发送给服务器以授予对受保护资源的访问权限? 工具 前端 HTML5(从手柄编译) JS CSS(由SASS编译) 后端 nodeJS(使用Express) 注意:我希望将来可以通过代码示例来编辑这篇文章(一旦我得到了它的大声笑),来帮助像我这样的其他困惑的人

节点:发送JSON Web令牌到页面redirect的客户端

我正在使用Node Express来构build我的后端服务器。 此外,身份validation是我的应用程序与Passport-SAML发生。 我正在使用JWT来维护用户会话。 所以stream量是, 用户在login端点中调用 他们被redirect到SAML身份提供者。 提供程序validation用户,并在callbackURL中将授权发送回服务器。 我正在使用POSTcallbackURL进行身份validation,然后为用户创build令牌以执行授权和会话pipe理。 callbackPOST端点也有一个页面redirect。 从目前为止我学到的是res.status和res.redirect不能在相同的端点出于显而易见的原因。 我一直在试图find正确的方法,任何帮助,不胜感激。 router.route('/login') .get( passport.authenticate(config.passport.strategy, { successRedirect: '/', failureRedirect: '/login' }) ); router.route(config.passport.saml.path) .post( passport.authenticate(config.passport.strategy, { failureRedirect: '/', failureFlash: true }), function (req, res) { res.redirect('/'); var token = Verify.getToken(req.user.saml); return res.status(200).json({ status: 'Login successful!', success: true, token: token }); console.log(token,'yes'); } );

快速会话和令牌在一个项目中

我需要express-session和jwt的解释。 例如,我有购物车,并login和login我使用jwt,但存储在购物车中select的产品我想使用express-session和connect-mongo是正确的方法吗? 我的问题是在一个项目中使用会话和jwt的正确和合理的解决scheme? 也许更好的是使用jwt来存储产品,例如3小时。

寻找JWT Auth微服务的例子

我想要使​​用NodeJS,Mongo和JWT构buildauthentication/授权服务。 此服务将是一个微服务,它不仅在允许请求之前处理来自我的API网关的请求,而且还处理可能需要检查身份validation和angular色的其他服务的请求。 我假设所有其他服务将使用此身份validation服务来validationJWT以及angular色等。 希望这张图更好地解释我在找什么。 任何人都可以指向我的资源,可以帮助我学习如何使用NodeJS做到这一点?

Node.js:login后在URL中用令牌(JWT)发送新的请求

在用户login并生成一个令牌后,我想在头部或类似的地方自动发送它。 到目前为止,我设法生成令牌,并检查它是否存在,如果它是有效的,似乎工作正常,只要我复制粘贴它的url为“?令牌=生成的令牌”。 我无法理解如何发送邮件,而无需自己写在邮递员的URL中。 我正在使用这些模块: performance 身体parsing器 mongoose JsonWebToken 所以我很好奇,如果我select只在login的时候生成token,如果我需要把它添加到用户的Schema中。 我现在不想使用护照,因为我想先了解基本知识。 在search了一段时间(包括jwt文档)之后,我没有真正find可以理解和实现的东西。 所以在这里,如果有人能指引我朝着正确的方向发展,那会很棒。 对不起,缩进和感谢提前。 这里是一些代码: 智威汤逊- middleware.js var jwt = require('jsonwebtoken'); var secret = 'mySecret'; module.exports = function (req, res, next) { var token = req.body.token || req.headers['x-access-token'] || req.query.token; if(!token) { return res.status(404).send({error:'No token found'}); } else { jwt.verify(token, secret, function(err, decode) { if(err) { […]

NodeJS JWT Sign.sign TypeError:不是缓冲区

我目前正在研究一个应该在google日历中创build事件的node.js应用程序。 在我的机器上(OS X 10.9.2),它运行良好,但在另一台机器上(Debian 7 Wheezy 64位)却不起作用。 两者都安装了相同的node.js版本:v0.10.26。 我总是得到以下错误: crypto.js:398 var ret = this._binding.sign(toBuf(key)); ^ TypeError: Not a buffer at Sign.sign (crypto.js:398:27) at createRS256Signature (/path/to/node_app/node_modules/googleapis/node_modules/gapitoken/node_modules/jws/index.js:75:58) at jwsRS256Sign (/path/to/node_app/node_modules/googleapis/node_modules/gapitoken/node_modules/jws/index.js:68:21) at Object.jwsSign [as sign] (/path/to/node_app/node_modules/googleapis/node_modules/gapitoken/node_modules/jws/index.js:32:12) at GAPI.getAccessToken (/path/to/node_app/node_modules/googleapis/node_modules/gapitoken/gapitoken.js:56:25) at GAPI.getToken (/path/to/node_app/node_modules/googleapis/node_modules/gapitoken/gapitoken.js:35:14) at JWT.refreshToken_ (/path/to/node_app/node_modules/googleapis/lib/auth/jwtclient.js:83:13) at /path/to/node_app/node_modules/googleapis/lib/auth/jwtclient.js:64:12 at /path/to/node_app/node_modules/googleapis/node_modules/gapitoken/gapitoken.js:20:17 at fs.js:266:14 导致此错误的代码: this.jwt = new googleapis.auth.JWT( SERVICE_ACCOUNT_EMAIL, SERVICE_ACCOUNT_KEY_FILE, […]

JWTauthentication是否安全?它如何保护CORS?

我已经在我的项目中实现了基于tokken的身份validation,而不是基于cookie会话的身份validation。 所以,在jwt(jason-web-tokkens)中,每次发送请求给服务器,我在头文件中附加tokken并把它发送给服务器,这个服务器在第一次生成tokkkne时使用的密钥被用来validation它,然后发送给我响应。 现在,我担心它,首先将tokken保存在浏览器的本地存储中。虽然tokken被哈希了,但是如果黑客把它从存储中取出并使用它呢? 谁能告诉我如何阻止CORS攻击? 我很困惑,在网上找不到任何可靠的答案。

设置passport-jwtauthentication

我用express API设置passport-jwt时遇到了一些麻烦。 在前端,我使用ember.js发送到/auth路由应validation会话的凭证,然后ember.js的库将处理在随后的请求中发送令牌。 我松散地遵循了这个教程 ,而是用passport-jwtreplace了他们的passport-http ,并在git回购中用例子来设置它。 在我的server.js我需要护照,并使用app.use(passport.initialize());将其设置为中间件app.use(passport.initialize()); 在server.js文件的底部,我用app.use('/api/v1', '/app/routes/api');调用我的apipath文件app.use('/api/v1', '/app/routes/api'); 我的app/routes/api.js文件看起来有添加和获取这样的用户部分 router.route('/users') .post(function(req,res) { user.addUser(req,res) }) .get(function(req,res) { user.getAllUsers(req,res) }); 哪些是在api/user.js文件中的导出引用,如下所示 var mongoose = require('mongoose'); var User = require('../../models/user'); module.exports.addUser = function(req, res) { var user = new User(req.body.user); user.save(function(err) { if (err) res.send(err); res.json({user: user}); }); }; module.exports.getAllUsers = function(req, res) { User.find(function(err, users) […]

如果使用授权承载令牌,则为400错误请求

我正在使用PostMan来解决与我的Angular / NodeJS应用程序奇怪的400错误。 我正在尝试获取https://example.com/login.html ,请求有两个标题: Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGc…==和Accept: text/html 这将返回一个400 Bad Request错误(服务器:cloudflare-nginx) 这工作正常(返回200 ),如果: 我访问我的本地环境中的文件http://localhost:5000/login.html (无https因素?) – 或 – 我从标题中删除Authorization: Bearer 如果我看我的NodeJS服务器日志,我甚至不会看到请求通过。 所以/login.html甚至没有被击中,我假设,因为快递在我的app.use(logger('dev'));之前拒绝它app.use(logger('dev')); 捡起来。 更新:我相信Cloudflare在请求到达Heroku之前就已经开始使用400了。 还有几点: 我正在使用JWT对用户进行身份validation,这是不记名令牌的来源。 如果我访问其他terminal(例如/profile持有人令牌的/profile ,则会通过解码令牌的用户configuration文件正确响应。 我的问题是: 为什么这个请求在其他端点上工作时会成为“错误请求”? 有没有一种方法来捕捉这个问题,并在返回400之前对请求做些什么?