Tag: jwt

我怎样才能发送和JSONweb令牌在浏览器中

我怎样才能发送和JSONweb令牌在浏览器中? 我需要在用户login后发送每个禁止的页面令牌。 我有代码,一切工作正常邮递员,但是当我尝试在浏览器req.headers["authorization"]始终未定义。 我也试图res.set({'token': 'some token'}); 然后请求在下一页但仍未定义。 有很多邮差的教程,但我可以弄清楚如何在浏览器中做到这一点。 这是我的代码: app.post("/api/login", function(req, res) { var user = { id: 3 }; var token = jwt.sign({ user }, 'secret'); res.json({token: token}); }); app.get('/api/protected', ensureToken, function(req, res) { jwt.verify(req.token, 'secret_key_goes_here', function(err, data) { if (err) { res.sendStatus(403); } else { res.json({ description: 'Protected information. Congrats!' }); } }); […]

解码jwt令牌 – 是否安全?

使用express,socket.io和基于令牌的authentication来build立testing服务器 看了这个教程https://auth0.com/blog/2014/01/15/auth-with-socket-io/ 在服务器端,教程logging解码的令牌 console.log(socket.handshake.decoded_token.email, 'connected'); 但是,当我尝试loginsocket.handshake.decoded_tokenvariables是未定义的socket.handshake不包含任何variables与解码令牌 所以..我试图谷歌如何解码令牌,发现这个页面https://developers.google.com/wallet/digital/docs/jwtdecoder 我粘贴公共令牌和脚本解码令牌没有jwtSecret!? 嗯…然后我在想..如果脚本可以解密令牌而没有秘密,怎么可能安全呢? 作为authentication返回给客户端的公共令牌 eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwibmFtZSI6ImNsYXJrIiwiZW1haWwiOiJjbGFya0BlbGVjdHJvYmVhdC5kayIsImlhdCI6MTQwMzczMTkyMSwiZXhwIjoxNDAzNzM1NTIxfQ.mVFymk6gKBPmcVObB_3ydqbJTlcv4eVNYBcahsjg0g8

MEAN Stack – 仅在某些REST方法上使用带有express-restify-mongoose的jwt

我对这些东西都很陌生,所以请耐心等待。 我尝试使用MEAN堆栈来创buildREST API – 为了使事情变得简单,我试图使用这个: https://github.com/florianholzapfel/express-restify-mongoose 运行时,它对我来说是完美的工作: restify.serve(应用程序,酒店); – >应用程序当然是expression,酒店是我的mongoose.model指向我的酒店架构。 它也正在处理我的“令牌逻辑”,我可以使用类似下面的方法来保护所有restify的URL: 除非({path:['/ auth','/']})); 我的问题是 – 我如何保护一些REST方法与我的令牌逻辑(POST,PUT,DELETE)在例如'/ api / hotels' – >我想像GET这样的方法是公开的,但不是POST,PUT和删除。 可能吗? 非常感谢您的帮助!

express-jwt通过路由处理特定的秘密密码

这是我的用例。 在使用express-jwt模块的快速应用程序中,我有两个主要路线。 我想确保我的路线与2个不同的密码。 app.use('/api/v1/admin', jwt({secret: "blabla1"}).unless({path:['/api/v1/admin/login']})); app.use('/api/v1', jwt({secret: "blabla2"}).unless({path: ['/api/v1/login']})); 在这种情况下,它不工作,因为我期待…是否有办法实现这一点,只有一个快速应用程序? 在此先感谢您的帮助家伙!

什么信息在身份validation令牌上签名

我使用jwt与NodeJS作为我的身份validation令牌。 目前,我签署的观众,IP和客户端的有效载荷。 我也把用户的guid放在有效载荷上,以便在随后的请求中,我可以使用guidfind用户; 一个guid的例子是bd262477-8b93-4f2c-9dc9-175edf6e0d14 。 这是不好的还是安全问题? 我想我问的是你应该把什么信息放在有效载荷上? guid好还是坏? 有人可以给我一个链接,解释为什么(或为什么不)有一个安全问题,你包括在令牌?

为api访问生成安全令牌

我需要生成一个安全令牌访问一个API。 用户将auth和成功auth我需要生成一个令牌。 重要提示:我有一个要求,我需要能够随时撤销用户对api的访问权限。 选项1: 我可以生成一个随机string,并将其用作令牌。 将令牌和用户存储在数据库中。 当用户通过令牌时,我检查数据库的令牌,如果它存在去… 这使我能够通过删除用户令牌来撤销访问。 如果他们试图重新login,令牌消失,他们将无法访问。 我也可以根据时间从数据库中删除令牌。 我正在使用nodejs并已经看到这个: 在Node.js中安全随机令牌 require('crypto').randomBytes(48, function(ex, buf) { var token = buf.toString('hex'); }); 这真的很安全,因为有人不能猜测我生成的令牌吗? 选项2: 使用像jwt的东西。 在身份validation用用户ID生成一个jwt。 当用户通过一个请求的jwt时,我确信jwt是有效的,如果是这样的话,抓取用户ID和好去。 这看起来更安全,因为jwt可以防止篡改。 问题是撤销对API的访问。 我可以存储所有jwts(直到它们到期)在数据库中,请求validation的jwt,并确保它在我的分贝。 如果我想撤销,我可以从数据库中删除它。 Con在这里是我现在有validation的jwt和查找确保其在我的分贝的开销。 有使用jwt撤销访问的好方法吗?

快速更新智威汤逊作为回应

我正在使用JWT令牌来validation我的应用程序中的用户。 我发送我的令牌到后端req.headers.access_token检查我是否在数据库中find当前令牌,如果它仍然有效,如果是,我更新令牌(更新expires ),然后转到当前路由。 这部分工作就像它应该的。 我的问题是发回令牌到前端,以便客户端可以发送更新的令牌下一个请求,但我到目前为止所尝试的一切都没有正确更新头: res.header.access_token = token; res.setHeader('access_token', token); 没有工作。 我读的地方我还需要添加Access-Control-Expose-Headers所以我在快速安装中添加了以下内容: app.use(function (req, res, next) { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE'); res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type, Authorization, access_token'); res.setHeader('Access-Control-Expose-Headers', 'X-Requested-With,content-type, Authorization, access_token'); next(); }); 但同样的问题存在。 问题: 我怎样才能更新回应标题中的令牌? 人们通常如何处理多个请求(问题是,第二个请求将带有无效的令牌,因为我只是更新了旧的请求) 我为我的jwt使用jwt-simple lib

Sails JS – 删除现有的JWT

我跟着这个教程https://ericswann.wordpress.com/2015/04/24/nozus-js-1-intro-to-sails-with-passport-and-jwt-json-web-token-auth/和我它工作得很好。 唯一遗漏的是注销function。 我读过,我可以从客户端删除令牌,但我认为这也是一个更好的办法也将其从服务器中删除。 这是我的AuthController.js var passport = require('passport'); //Triggers when user authenticates via passport function _onPassportAuth(req, res, error, user, info) { if (error) return res.serverError(error); if (!user) return res.unauthorized(null, info && info.code, info && info.message); return res.ok({ // TODO: replace with new type of cipher service token: HashService.createToken(user), user: user }); } module.exports = { […]

使用jwt和socket io进行authenticationstream程

我的Socket.IO应用程序要求用户在发送消息之前进行身份validation,并在没有身份validation的情况下进行连接以读取消息。 下面是一个代码示例,假设客户端将通过REST APIlogin,获取JWT并使用收到的令牌重新与套接字服务器连接: var socket = io.connect('', { query: 'token=' + token }); 我如何构build应用程序的身份validationstream程?

Angular Node – 在打开新的浏览器窗口时向服务器发送令牌

这个问题是不言自明的:我有一个令牌存储在我的浏览器。 当我login时,服务器端authentication中间件使用Passport来authentication我。 但是,当我closures并重新打开浏览器窗口时,令牌仍然存在,但护照不知道我是谁。 我怎样才能从客户端到服务器端检索令牌? 以下是我的代码。 app.get('/main', ensureAuthenticated, function(req, res, next) { // thingToSend gets sent the first time, I will modify it // later so it doesn't resend token if token exists var thingToSend = { token: createSendToken(req.user, config.secret), id: req.user._id, username: req.user.username, authorization: req.user.authorization }; res.render('main.ejs', thingToSend); }); function ensureAuthenticated(req, res, next) { if […]