Tag: jwt

即使在授权中input令牌,JWT也会返回无效的签名错误

我已经看了这个堆栈溢出条目Node.js – Express.js JWT总是返回一个浏览器响应无效的令牌错误,但我找不到解决scheme。 我试图编写一个小节点应用程序,作为使用JWT访问令牌的概念validation。 我去了http://jwt.io/并试图跟随video教程。 我得到了一个令牌生成,但实际上使用令牌时,我得到一个“未经授权的错误:无效签名”的错误。 以下是我的源代码 const myUsername = 'ironflag'; const express = require('express'); const expressJWT = require('express-jwt'); const bodyParser = require('body-parser'); const jwt = require('jsonwebtoken'); const PORT = 2000; // App const app = express(); //fake data let killerBeez = { members: 9, location: 'staten island', stateOfBeing: 'wu-tang forever', memberList: [ { […]

如何使用节点expression式在mongodb中存储Json Web Token

我尝试通过mongodb将jwt(JsonWebToken)实现到节点expression式中。 在生成令牌时,我将令牌值存储到数据库收集中,并从mongodb中检索令牌并将其传递给下一页并设置注销选项。当我触发注销时,数据库中的令牌字段被刷新,在此之后没有更多的行动。 但问题是,当多个用户login应用程序是不可能的。因为当我点击注销它清除所有的令牌。 我怎样才能正确解决这个..?

REST | 智威汤逊| 身份validation:如何validation安全资源的权限

基于令牌的身份validation:智威汤逊? 检查。 GET /items/:id …怎么样? 这是一个小问题,但可能是一个很大的答案,因为我对这个有点新… 一旦我为客户提供了一个JWT,他们希望获得一个资源 – validation客户端的逻辑stream程是什么样的? 换句话说,我有一个JWT 有效载荷如… { … "sub": user.id … } …和客户端需要访问项目 998 /api/items/:id … 我目前的做法如下所示。 // ItemsController.lang | 'GET /api/items/:id' var userId = jwt.decode(token).sub; var isValid = checkUserIdInDatabase(userId); var secureResource = ORM.findOne({ user: userId, id: request.itemId }); response.send(secureResource); 与此同时,当客户注册/进入时,我向他们提供了一个看起来像这样的回应… { user: { id: 998, email: 'no@username.com', preferences: […] […]

JWTauthentication使用$ http.get而不是使用$ http.post

我是新的MEAN堆栈。 我正在使用jwt来validationapi endpoint '/ api / candidates' 在客户端/angular度js服务我有以下条目 resumeFactory.get = function(candidateName) { return $http.get('/api/candidates', { headers: { Authorization: 'Bearer '+ authenticationService.getToken() }); }; 在服务器端我有: app.get('/api/candidates', auth, function (req, res) { if (!req.payload._id) { //user not logged in console.log(req); res.status(401).json({"message": "no user logged in from candidates"}); } else { Candidate.find({}, function (err, candidates) { if (err) […]

只使用JWT将会话数据保留在后端

我在我的应用程序上使用智威汤逊,我定义我的说法是这样的: const claims = { iss: process.env.DOMAIN, scope: "game", email: user.get("email") }; 我validation这样的令牌: nJwt.verify(socket.handshake.query.token, app.get("jwt.secret"), (err, decoded) => { if (err) return; console.log(decoded.body.email); // doge@doge.com }); 但是,这迫使我将会话数据添加到claims对象中。 相反,我想将令牌用作会话标识符,并将会话值保留在后端,例如: nJwt.verify(socket.handshake.query.token, app.get("jwt.secret"), (err, decoded) => { if (err) return; // Since we verified token, read token's session data from backend }); 有没有这样做的例子? PS。 我使用Redis,所以我可以通过Redis设置/获取值,但是我觉得这是不好的做法,因为我会自己开发整个会话。

运行testing时如何优雅地跳过express-jwt中间件?

这是我创build的一个小型中间件,用于在我的nodejs应用程序testing期间跳过身份validation: authentication(auth) { if (process.env.NODE_ENV !== 'test') { return jwt({ secret: new Buffer(auth.secret, 'base64'), audience: auth.clientId }); } else { return (req, res, next) => { next(); }; } } 我对它的样子并不满意。 有没有更完美的方式来完成这个?

如何在我的SPA加载过程中validation和更新JWT id_token?

我对OAuth 2.0和OpenID Connect相当OAuth 2.0 ,而且我无法理解stream程的某些部分(或者我应该使用哪些最佳实践)… 对不起,冗长的职位:) 我的设置: OP (OpenID提供者),基本上是使用oauth2orize-openid和passport来authentication和授权用户的express服务器。 我们称之为http://authserver.com Single page application (react + webpack)需要根据我的OP对用户进行身份validation,我们称之为http://my-spa.com 由于它是一个SPA(静态的webpack服务),我不得不使用Implicit Flow 。 我的问题 一旦用户导航到http://my-spa.com ,应用程序被加载,然后检查localStorage是否存在id_token 。 id_token在localStorage没有id_token : 由于没有令牌,我redirect到http://authserver.com/dialog/authorize response_type=id_token scope=openid profile 一旦用户成功通过身份validation和授权, authserver使用URI片段中的id_tokenredirect到my-spa 我将id_token存储在localStorage ,用户可以开始使用该应用程序。 加载时在localStorage有一个id_token 用户closures浏览器并再次打开。 这是我不知所措的地方。 由于已经有一个令牌(来自以前的login),我需要检查它是否有效。 有什么最好的做法呢? 以下是我认为是正确的: redirect到http://authserver.com/dialog/authorize使用: prompt=none id_token_hint=CURRENT_TOKEN 一旦OP收到这个请求,它应该validationJWT签名,尝试自动批准用户,并重新引导一个新的JWT。 令牌get在一段时间后过期 假设一个login用户的JWT过期了,应该什么时候请求一个新的? 什么应该引发更新? 什么是/tokeninfo或/userinfo ? 据我了解,JWT存储了识别用户所需的全部数据。 不过,我见过的例子调用/tokeninfo或/userinfo 。 如果我已经有sub标识,这些端点只是为了validation标记(假设我只需要标识的标识)。 智威汤逊签名validation 除OP , […]

什么是身份validation策略

对于authentication策略是什么以及它扮演什么样的angular色似乎没有一个真正清晰的解释。 这是我认为可能是迄今为止(请纠正我,如果我错了): 看来,每个logintypes都有一个策略(谷歌,脸谱,本地等)。 创build策略,然后将其添加到护照对象,然后使用护照对象签署用于(未)指定时间的令牌。 但是,用户名和密码最初不是通过jwt或护照进行validation的。

Nodejsvalidation来自.net的jwt令牌失败

我通过这个C#代码(使用System.IdentityModel.Tokens.Jwt)从.net创build令牌: var keybytes = Convert.FromBase64String("MYCUSTOMCODELONGMOD4NEEDBEZE"); var signingCredentials = new SigningCredentials( new InMemorySymmetricSecurityKey(keybytes), SecurityAlgorithms.HmacSha256Signature, SecurityAlgorithms.Sha256Digest); var nbf = DateTime.UtcNow.AddDays(-100); var exp = DateTime.UtcNow.AddDays(100); var payload = new JwtPayload(null, "", new List<Claim>(), nbf, exp); var user = new Dictionary<string, object>(); user.Add("userId", "1"); payload.Add("user", user); payload.Add("success", true); var jwtToken = new JwtSecurityToken(new JwtHeader(signingCredentials), payload); var jwtTokenHandler = new […]

在AngularJS本地保存会话有多安全?

所以这是我的结构: HTML表单将身份validation发送到nodejs 。 使用passportjs > res.send使用jwt-simple (json web token)发送userid进行身份validation。 收到的信息保存在$localStorage.user 。 我在任何需要的控制器中使用该信息,并将其包含在内,并将我的post / get请求发送给nodejs 。 我解码nodejs中的信息并查询DB 。 这安全吗? 这是如何在现实世界中工作? 非常感谢。