问题标签 [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.

0 投票
1 回答
2139 浏览

node.js - 我如何模拟 auth0 身份验证以进行测试?

我正在使用autho0express-jwt来验证我的应用程序用户。

除了测试之外,一切都非常酷。我在 API 中传递的内容由作者严格划分。这意味着您只有拥有该内容才能访问该内容。

我正在使用req.user.sub(如果用户被识别,则由 jwt 提供)来设置在我的 API 中传递的内容的作者。

我应该使用 req.user.name 来提供作者吗?如果是这样,我如何模拟身份验证以编写我的测试。

0 投票
1 回答
531 浏览

jwt - express-jwt:快速拒绝 JWT 缺少的基本属性

我正在使用 express-jwt 创建中间件jwtCheckMiddleware

在开发的某个阶段,发布的 JWT 缺少 JTI 属性。新发行的代币持有 JTI 财产。

缺少 JWT 的请求会很快被拒绝;getTokenFromRequest引发错误。这很好用。

带有旧 JWT 的请求(缺少 JTI)只是超时。

isNotRevokedCallbackJTI内部有一个空检查;当 JTI 未定义时,我会抛出错误。会不会是expressJwt中间件构造函数没有正确捕捉到这个错误,导致超时?

isNotRevokedCallback大致基于https://github.com/auth0/express-jwt#revoked-tokens

0 投票
1 回答
585 浏览

node.js - 如果它与签名令牌相同,NodeJS JWT 验证即使令牌也失败

尝试在 NodeJS 上开发我的 API,我得到了我的签名令牌并将其发送回安全的 api 路由,但 jwt 永远不会有效,即使它与我生成的令牌相同!我的代码有什么问题?

我是那样做的

这是验证:

这是我的 Angular2 服务,它从我的 API 请求数据

由符号生成的令牌:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoidHQiLCJwZXJtaXNzaW9ucyI6W10sImlhdCI6MTQ4MzExNTAzNCwiZXhwIjoxNDgzNzE5ODM0fQ.bJbH4619JAU8pf_6qcYl0VPB6VleV5

http 服务收到的令牌:

承载 eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoidHQiLCJwZXJtaXNzaW9ucyI6W10sImlhdCI6MTQ4MzExNTAzNCwiZXhwIjoxNDgzNzE5ODM0fQ.bJbH4619JAU8pf_6qPBRYeXb0V10s

0 投票
1 回答
1589 浏览

node.js - Auth0 - 规则 & 组 && 用户管理

我已经使用 Auth0 创建了一个帐户,我正在尝试让 Angular 2 简单地登录到我们的后端 API。

1.我要做的是能够访问API中的角色以查看用户是否具有正确的权限。

我已经启用了我进入的 Auth0 授权扩展并创建了一个组和一个角色,我已将这些分配给我创建的测试用户,然后我进入配置并发布了令牌内容和持久性的规则。

如何在 nodejs 应用程序中查看来自 JWT 的权限/组?我正在使用express-jwt这个:

这给了我诸如 iss、sub、aud 之类的详细信息。但是没有关于用户元数据的详细信息,我如何才能检索到这个?另外,由于我之前显然没有使用过 Auth0,最好的做法是将用户详细信息存储在我们自己的数据库中,这样我就可以使用自己的 ID 来存储用户操作,或者如果 Auth0 给出一个 ID,是否可以使用 ID在我们的数据库中存储用户操作。

编辑 1

好的,我可以看到 Lock 有一个选项参数,您可以在其中传递范围,登录时请求这些参数是不是不好的做法?现在只有少数组/角色。或者更好的是 API 可以使用提供的令牌来查找用户以获取 app_metadata 以查看权限等,如果可以,我该如何查找?


2. 我如何管理和查看用户,以便在我们自己的管理面板中显示他们并管理他们拥有的权限。

0 投票
2 回答
438 浏览

passport.js - 解码令牌不会提供用户个人资料

我已经尝试解决这个问题好几天了。我按照 Auth0 文档中的教程进行操作。

使用 express-jwt 解码令牌后:

req.user 的内容没有我在 API 中进行角色限制所需的配置文件和角色。

相反,内容采用以下形式:

在前端,我已经获得了我需要的用户个人资料信息,但我无法继续前进。

我正在使用一个函数来限制角色:

但 req.user.profile 始终未定义。

在主要的快速应用程序定义中,我有:

0 投票
3 回答
9256 浏览

node.js - 带有 JWT 的 Facebook 护照

我一直在我的服务器上使用Passport进行用户身份验证。当用户在本地登录时(使用用户名和密码),服务器会向他们发送一个存储在本地存储中的JWT,并在每次需要用户身份验证的 api 调用时将其发送回服务器。

现在我也想支持Facebook 和 Google 登录。自从我开始使用 Passport 以来,我认为最好继续使用 Passport 策略,使用passport-facebookpassport-google-oauth

我将参考 Facebook,但两种策略的行为相同。它们都需要重定向到服务器路由(“/auth/facebook”“/auth/facebook/callback”)。该过程成功地保存了用户,包括他们的 facebook\google id 和数据库上的令牌。

在服务器上创建用户时,会创建一个 JWT(不依赖从 facebook\google 收到的令牌)。

问题是,在创建之后,我找不到将 JWT 发送到客户端的正确方法,因为我还应该重定向到我的应用程序。

上面的代码将我重定向到我的应用程序主页,但我没有得到 token。如果我删除了successRedirect,我确实得到了令牌,但我没有被重定向到我的应用程序

有什么解决办法吗?我的方法错了吗?任何建议都可以。

0 投票
1 回答
55 浏览

angular - 请求中的“可选”JWT?

第一次学习 JWT...

我有一个与 Auth0 Facebook 登录集成的 NodeJS/Express/Angular 2 应用程序。

我目前将用户配置文件详细信息存储在 localStorage 中,并且知道这可以通过开发控制台进行编辑。

我希望用户无论是否登录都能够发表某个帖子(并在他们登录时将他们的用户帐户与数据库中的结果实体相关联。但是,我想验证他们没有以任何方式更改 localStorage 对象,可能是为了模仿另一个用户等。

是否有一条路线能够处理这个问题,或者我应该将它分成两条单独的路线供经过身份验证的用户/客人使用,并从 JWT 检查中排除客人路线?

任何关于这个主题的一般建议也很感激

0 投票
1 回答
1962 浏览

node.js - express-jwt 在验证用户时总是发送 401 未授权

我有这个中间件功能,它检查用户是否登录,因为我也有 web 应用程序和 android 平台,因此我使用 android 和 web 的令牌,我使用 session,默认情况下是通过护照管理器.

In my function我正在检查如果我有一个 Authorization 标头,我知道它是我的 android 平台,因此通过验证 jwt 令牌来验证用户,但它总是向我发送 401 未经授权而不设置 req.user。

这是中间件功能,如果有人可以指出我的错误,我的逻辑出错了。

0 投票
1 回答
1626 浏览

javascript - 为什么 req.somevariable 和 res.locals 不能与 jwt 回调一起使用?

我们有一个route& amiddleware这样的:

当我们这样做时:

req.somevariable和的值res.locals.testundefined外面middleware

当我们这样做时:

req.somevariable和的值在res.locals.test外部可用middleware

这里有什么问题?

0 投票
1 回答
256 浏览

node.js - 如何在客户端使用 Passport 和 JWT 进行授权?

我目前正在为朋友的足球队创建自定义 CMS。架构如下:

在后端,我有一个与数据库(mongoDB)交互的 API。

在前端,我有一个快速服务器,它使用模板引擎把手为页面提供服务。

目前,我已经设法使用 Passport 和 JWT 对 API 的请求进行身份验证,这对于查询 API 来说很好,登录时我在用户的 cookie 存储中存储了一个具有权限的 JWT(它是静态页面而不是 SPA 所以我无法访问本地/会话存储)。

我的问题是我正在努力如何在客户端实施授权以访问管理面板。我应该在客户端解码 JWT 并读取用户角色,然后如果用户是管理员,则为管理页面提供页面,或者我应该将访问前端管理部分的每个请求发送到 API验证检查然后提供文件。

任何帮助将不胜感激,谢谢。