我想对我们的新REST API实现基于JWT的身份验证.但是由于在令牌中设置了到期,是否可以自动延长它?如果他们在那段时间内积极使用该应用程序,我不希望用户在每X分钟后需要登录.这将是一个巨大的用户体验失败.
但是延长过期会创建一个新令牌(旧令牌在到期之前仍然有效).每次请求后生成一个新令牌听起来很愚蠢.当多个令牌同时有效时,听起来像是一个安全问题.当然,我可以使用黑名单使旧的旧的无效,但我需要存储令牌.JWT的一个好处就是没有存储空间.
我发现Auth0是如何解决它的.它们不仅使用JWT令牌,还使用刷新令牌:https: //docs.auth0.com/refresh-token
但同样,要实现这一点(没有Auth0),我需要存储刷新令牌并保持其过期.那么真正的好处是什么?为什么不只有一个令牌(不是JWT)并在服务器上保持过期?
还有其他选择吗?使用JWT不适合这种情况吗?
对于我正在研究的新node.js项目,我正在考虑从基于cookie的会话方法切换(我的意思是,将id存储到包含用户浏览器中的用户会话的键值存储)使用JSON Web令牌(jwt)进行基于令牌的会话方法(无键值存储).
该项目是一个利用socket.io的游戏 - 在一个会话中将有多个通信通道(web和socket.io)的情况下,基于令牌的会话将非常有用.
如何使用jwt方法从服务器提供令牌/会话失效?
我还想了解在这种范例中我应该注意哪些常见(或不常见)的陷阱/攻击.例如,如果此范例容易受到与基于会话存储/ cookie的方法相同/不同类型的攻击.
会话商店登录:
app.get('/login', function(request, response) {
var user = {username: request.body.username, password: request.body.password };
// Validate somehow
validate(user, function(isValid, profile) {
// Create session token
var token= createSessionToken();
// Add to a key-value database
KeyValueStore.add({token: {userid: profile.id, expiresInMinutes: 60}});
// The client should save this session token in a cookie
response.json({sessionToken: token});
});
}
Run Code Online (Sandbox Code Playgroud)
基于令牌的登录:
var jwt = require('jsonwebtoken');
app.get('/login', function(request, response) {
var user = {username: request.body.username, …
Run Code Online (Sandbox Code Playgroud) 我有一个使用JWT的无状态身份验证模型的新SPA.我经常被要求引用OAuth进行身份验证流程,例如要求我为每个请求发送"Bearer tokens"而不是简单的令牌标头,但我认为OAuth比简单的基于JWT的身份验证要复杂得多.如果JWT身份验证的行为与OAuth相似,主要区别是什么?
我也使用JWT作为我的XSRF-TOKEN以防止XSRF,但我被要求将它们分开?我应该将它们分开吗?这里的任何帮助将不胜感激,并可能为社区带来一套指导方针.
我爱JWT.合作真的很有趣.我的问题是:如果我得到JWT并且我可以解码有效载荷,那么它是如何安全的?我不能只是从标题中获取令牌,解码并更改有效负载中的用户信息,并使用相同的正确编码密码将其发回?
我知道他们必须是安全的,但我真的很想了解这些技术.我错过了什么?谢谢!
我正在尝试在我的Web API应用程序中支持JWT承载令牌(JSON Web令牌),我迷路了.
我看到对.NET Core和OWIN应用程序的支持.
我目前正在IIS中托管我的应用程序.
如何在我的应用程序中实现此身份验证模块?有什么办法可以使用<authentication>
类似于我使用表单/ Windows身份验证的方式配置吗?
我正在使用Auth0来处理我的网络应用程序中的身份验证.我正在使用ASP.NET Core v1.0.0和Angular 2 rc5,我对身份验证/安全性一般不太了解.
在ASP.NET Core Web Api的Auth0文档中, JWT算法有两种选择:RS256和HS256.这可能是一个愚蠢的问题但是:
RS256和HS256有什么区别?有哪些用例(如果适用)?
我想知道什么是JWT令牌最合适的Authorization
HTTP头类型.
最受欢迎的类型之一是Basic
.例如:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Run Code Online (Sandbox Code Playgroud)
它处理两个参数,如登录和密码.因此它与JWT令牌无关.
另外,我听说过Bearer类型,例如:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
Run Code Online (Sandbox Code Playgroud)
但是,我不知道它的含义.它与熊有关吗?
是否有一种在HTTP Authorization
头中使用JWT令牌的特定方法?我们应该使用Bearer
,还是应该简化并使用:
Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
Run Code Online (Sandbox Code Playgroud)
谢谢.
编辑:
或者,也许只是一个JWT
HTTP标头:
JWT: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用JWT为我的RESTful API实现无状态身份验证.
AFAIK,JWT基本上是在REST调用期间作为HTTP头传递的加密字符串.
但是,如果有一个窃听者看到了请求并窃取了令牌呢?那么他能用我的身份伪造请求吗?
实际上,这种关注适用于所有基于令牌的身份验证.
怎么预防?像HTTPS这样的安全渠道?
如何使用JavaScript解码JWT的有效负载?没有图书馆.因此令牌只返回我的前端应用程序可以使用的有效负载对象.
示例令牌: xxxxxxxxx.XXXXXXXX.xxxxxxxx
结果就是有效载荷:
{exp: 10012016 name: john doe, scope:['admin']}
Run Code Online (Sandbox Code Playgroud) 我正在根据以下文章测试基于JWT令牌的安全性的实现.我已成功从测试服务器收到一个令牌.我无法弄清楚如何让Chrome POSTMAN REST客户端程序在标头中发送令牌.
我的问题如下:
1)我使用正确的标题名称和/或POSTMAN界面吗?
2)我需要基于64编码令牌吗?我以为我可以把令牌送回来.
jwt ×10
security ×3
javascript ×2
node.js ×2
access-token ×1
api ×1
auth0 ×1
c# ×1
express ×1
express-jwt ×1
http-headers ×1
oauth ×1
postman ×1
session ×1