问题标签 [express-jwt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - 伪造有效的 JWT 令牌
成功登录后,我的节点应用程序返回一个 JWT 令牌。
JWT 使用用户 ID、到期日期和密码进行签名。
以下是我为 id: 1 的用户生成令牌的方法:
由于我的后端应用程序从它的令牌中识别用户:
具有“id:1”的用户是否可以编辑他的有效令牌,将其设置为“id:2”,然后开始在后端应用程序中鬼混,就好像他是具有“id:2”的用户一样?
node.js - UnauthorizedError:无效算法 express-jwt
我在我的网站上显示一些从节点服务器返回的数据。直到今天它都可以完美运行。现在,当我转到我的网页时,我的服务器控制台上出现以下错误。我Auth0
用于登录用户。
可能是什么问题?
javascript - 为什么 auth.isAuthenticated() 在 MEAN.JS 中不起作用?
我使用带有 jsonwebtoken 的 MEAN.JS 进行了简单的注册、登录和文章。在用户输入所有值后的注册页面中,我通过注册 api 将值传递给服务器。我正在创建 jsonwebtoken 并传递给客户端的服务器端
在让那个令牌客户端调用一些“我”api之后(我不明白我传递的是什么)
客户端注册控制器:
身份验证服务:
用户服务:
注册后:
我不明白这一点。在服务器端 'me' api 看起来像这条路线:
控制器 :
身份验证服务:
我想知道他们在'me' api 中传递了什么,以及我如何在exports.me 函数中获得'req.user._id'。如果我想制作 'me' api(我自己的),我怎样才能将它传递给我的令牌?
我得到这个的服务器端控制台:GET /api/users/me 200 876ms - 339b
.
javascript - express-jwt 中缺少“admin”属性
我有一个带有 express-jwt 的 nodejs express 服务和一个受保护的 api 调用。
问题是,req.user 对象不包含“admin”字段。我已经在 Auth0 规则中添加了角色,所以我可以让它在我的客户端中工作,而不是在 nodejs 服务器中。
我从这里按照教程:https ://github.com/auth0/express-jwt
我在这里错过了什么吗?是否需要在 auth0 中设置规则以便添加管理字段?
编辑:在 git 问题中找到此描述:“您的令牌需要包含信息(例如:角色)。为了使用 Auth0 执行此操作,您必须请求适当的范围,例如:范围 = openid 电子邮件角色。” 现在,如何编辑 express-jwt 的范围?
提前致谢!
node.js - 如何使用 angular2 设置 express-jwt 而不阻塞 node_modules?
我正在制作一个 nodejs,angular2 应用程序。我想设置 JWT 身份验证,我正在使用 express-jwt 和 jsonwebtoken,我的所有路由和应用程序都按预期工作,只要我没有设置这样的 express-jwt 中间件。
我收到以下错误:
基本上,我的应用程序只有通过身份验证才能访问这些路由。我还尝试将这些路由包含在除非:路径中,但这没有帮助。
如何使用 jwt 使这些路线可访问?
node.js - express-jwt:除非使用 mocha/chai 不遵守条件
我正在使用平均堆栈和 express-jwt 开发一个站点,以阻止对我站点的 api 调用的访问,除非用户经过身份验证。我需要用户未登录才能访问某些 api 调用,即 /api/login 和 /api/register。当我使用 firebug 访问端点时,一切似乎都按预期工作,它在正确的条件下阻塞并在正确的条件下允许。我什至在萤火虫下收到了令牌。但是,如果我使用 mocha/chai 进行测试,我会收到“401 未授权”错误,指示“未找到授权令牌”。我正在使用以下代码忽略选定的端点:
应用程序.js:
路线.js:
路线/registration.js:
我想阻止访问除上面列出的三个之外的所有路由。有人能指出我做错了什么,因为我没有看到吗?我是 node.js 的新手。
security - 会话和基于令牌的身份验证之间的技术差异
我在写我的单身汉,我需要弄清楚哪种身份验证/授权方法最适合我正在合作的公司。
所以我一直在比较基于会话和令牌的身份验证方法,但是关于令牌如何工作以及它们如何比会话身份验证更好,我还不清楚几点:
对我来说 100% 清楚的唯一好处是令牌可以从没有 cookie 存储的客户端使用,并且它们可以用于不同的子域和完全独立的域,因为它不会阻止浏览器的 CORS 策略。
- 我读到所有 cookie 都会随每个请求一起发送到原始域(除非将 cookie 设置为仅在安全连接上发送),这意味着令牌将在请求中出现两次,除非您当然进行身份验证来自另一个域的用户。这是一个正确的假设吗?
- 令牌如何验证服务器端?解密后,是根据用户名、密码和密钥/私钥进行检查,还是只是这里使用的密钥/私钥?
- 如果我在为服务器上的某个资源授权它们时需要用户名/用户 ID,我没有对其进行身份验证,如果我没有原始用户数据要检查,我可以盲目地信任这些凭据吗?
最后,许多文章声称令牌可以防止 CSRF。
CSRF:我们还将提供针对跨站点请求伪造 (CSRF) 的保护。用户很容易受到 CSRF 攻击,因为他们已经可以通过银行网站进行身份验证,并且可以在访问其他网站时利用这一点。”
这对我来说完全没有意义。似乎他是在说类似 OAuth 的系统会阻止 CSRF?我不太了解CSFR的工作原理,所以这里可能只是我的空白,但据我所知,会话或令牌都不能防止这种情况,因为每个请求都不是唯一的。
编辑: 我刚刚意识到令牌可能会阻止CSFR的原因是,如果另一个站点设法从您的浏览器向您的服务器提交表单,它不会由浏览器自动发送。但这意味着如果从服务器上的 cookie 标头中提取令牌可能会受到影响,如果您使用 JWT,这应该不是问题,因为它使用它自己的“授权”标头,您必须使用 JS 设置它。但这仍然让 scotch.io 文章声称对我来说听起来像是胡说八道。
json - Express JS 和 JWT - 令牌类型未显示在解码的标头中
我刚刚在我的 express JS 应用程序中添加了基于令牌的身份验证 - 看起来令牌类型未显示在解码部分中。
我正在使用https://jwt.io/进行测试
我用来测试的令牌 -
标题部分刚刚显示
我希望它会像这样出现——
请解释为什么标头中缺少 Token 类型?
我像这样生成令牌 -
谢谢
node.js - 如何使用 Express-JWT 处理错误
我正在尝试合并 express-jwt 库,但我不太了解它的错误处理是如何工作的。
文档说:
错误处理
默认行为是在令牌无效时抛出错误,因此您可以 > 添加自定义逻辑来管理未经授权的访问,如下所示:
但我很困惑这是如何工作的。如果我有一个简单的情况,如果令牌有效,req
res
我想调用,或者如果不是,则调用错误,我在哪里放置该函数?next
next
app.use
例如,这是我的代码:
这里err
将来自我的数据库调用,而不是来自 express-jwt 验证。任何帮助表示赞赏。
node.js - 运行测试时如何优雅地跳过 express-jwt 中间件?
这是我创建的一个小型中间件,用于在我的 nodejs 应用程序测试期间跳过身份验证:
我对它的外观不满意。有没有更优雅的方式来实现这一点?