Tag: json web token

使用nodejs应用程序上的刷新和访问令牌了解身份validationstream程

我知道已经有很多关于Oauth,Oauth2,JWT等的post了。我看了很多,而且比以前更加困惑,所以我正在寻求一些解释。 我会提出我对这个问题的看法,希望有人能告诉我,如果我的实施是足够安全的,或者我做错了什么,以及如何改进。 我正在build立一个API Rest服务器,为我的用户提供资源。 假设这是一个银行应用程序,用户可以存款,取款和转账。 我正在使用nodejs,hapijs,jsonwebtokens和bcrypt为我的服务器。 我想实现两个令牌authenticationstream程(Oauth2)。 这是我这样做的方式: 用户通过提供一些凭据(用户名和密码)login到auth服务器。 服务器validation用户的凭证,如果它们是有效的,它将授予对用户的访问并返回刷新令牌和访问令牌。 这些令牌被保存到浏览器或移动设备的本地存储器中。 access token : 被签名为jsonwebtoken。 包含发布date,过期date(5分钟),用户数据(id,用户名)。 refresh token : 被签名为jsonwebtoken并用bcryptencryption。 包含一个唯一标识符 可能包含到期date 保存在数据库中。 只要access token有效,即没有过期并且包含有效的用户数据,资源服务器就为用户提供所请求的资源。 当access token不再有效时,auth服务器请求客户端提供refresh token ,以便发出新的access token 服务器从用户接收refresh token ,对其进行解密,将其与数据库中的refresh token进行比较,检查是否已被吊销,并检查其唯一标识符。 如果refresh token通过所有testing,则服务器向客户端发出一个新的access token 。 如果refresh token一次testing失败,则服务器请求用户重新进行身份validation。 注:我正在尝试避免使用Cookie。 问题: 如果用户能够窃取access token ,我想它也可以窃取refresh token 。 那么,我怎样才能使refresh token更安全呢? Oauth2stream程的观点是否正确? 我可以改进什么? 我错过了什么吗?

在Angular2中保护API密钥

我现在一直在Google上search。 可能是我错过了正确的关键字。 我有以下设置: ExpressJS API(在端口3000上使用pm2运行) Angular2应用程序 – 通过nginx提供 两者都在同一台服务器上运行。 调用api(mydomain / api /)代理127.0.0.1:3000 对于需要授权的api调用,我将使用JWT和用户authentication。 我想要实现的是,我为我的angular2应用程序生成一个令牌,允许/需要进行公共呼叫(例如产品清单)。 当然,我不希望别人通过直接的API调用(盗用令牌)来获取我的产品和价格。 任何帮助赞赏。

如何在注销时销毁JWT令牌?

我正在使用jwt插件和策略在hapijs。 我可以在login用户时创buildjwt token,并通过“jwt”策略使用相同的标记validation其他API。 我将“request.state.USER_SESSION”中的标记设置为cookie,其中USER_SESSION是标记名称。 另外我不保存这些令牌在数据库中。 但是如何在注销的时候销毁jwt令牌。 请build议一个方法。

使用angular和express-jwt实现刷新令牌

我想使用angular,nodejs和express-jwt来实现带有json web令牌的Sliding过期概念。 我对如何做到这一点感到有些困惑,并且正在努力寻找更新令牌或与这些技术/框架相关的其他材料的任何示例。 我正在考虑的几个选项是 在初始login后,为每个请求生成一个新的令牌 跟踪服务器端发出的令牌 但是我真的不确定,请帮忙

无法正确设置JWT的Exp和Iat

我有点被这一个难住。 我正在尝试build立一个有效的JWT。 我正在使用jsonwebtoken中间件的node.js。 我已经遵循了回购协议( 位于这里 )的文件,但我一直得到错误的Exp和Iat。 显然我想这样做是正确的,所以我不允许已经过期的智威汤逊。 作为一个testing,我有以下代码: var token = jwt.sign({"id": user._id}, configGeneral.JWT, { expiresIn: '1h' }); var decoded = jwt.decode(token, configGeneral.JWT); var d1 = new Date(decoded.exp); var d2 = new Date(decoded.iat); console.log(decoded); console.log(d1); console.log(d2); 这个的输出是: { id: '56253091fe0397c80133f3e4', iat: 1445714161, exp: 1445717761 } Sat Jan 17 1970 19:35:17 GMT+0200 (South Africa Standard Time) […]

刷新令牌Jsonwebtoken

我正在使用NodeJs API应用程序中的jsonwebtoken来validation我的API应用程序中的用户。 我设置的stream程如下: 1)用户通过注册API进行注册,并使用以下命令生成访问令牌: var jwt = require('jsonwebtoken'); var token = jwt.sign(user, _conf.authentication.superSecret, { expiresIn: 1440 // I intend to keep it short. }); 2)例如,令牌在24小时内过期。 该令牌返回给客户端移动应用程序,作为所有后续API请求中的标头使用。 我想知道如何解决与jwt的刷新令牌。 目前我没有刷新令牌的机制。 因此,如果令牌在24小时内过期,我希望客户端(移动应用程序)能够请求新的访问令牌。 提前致谢。

智威汤逊:什么是一个好的密钥,以及如何将它存储在Node.js / Express应用程序中?

首先,生成密钥的好方法是什么? 我应该用键盘上的许多随机键生成一个,但是必须有更好的解决scheme。 解释如何生成一个非常好的关键。 其次,什么是存储密钥的好方法? 我可以在我的应用程序configuration中编写密钥,但这意味着源代码的妥协将危及整个系统。 将密钥存储在Node.js Express应用程序中有什么好方法?