网站搜索

javascript - 如何在 Node 中使用 x.509 证书验证 JWT 令牌?

我正在尝试创建一个 Node 脚本来验证 JWT 令牌。我有公钥(它是一个 x.509 证书)和 JWT。

我尝试使用 https://github.com/auth0/node-jsonwebtoken,但不幸的是它们似乎不支持 x.509。

如果你知道有可以使用 x.509 证书验证 JWT 令牌的软件包,我将不胜感激。

谢谢!

答案#1

JWT 可以使用公钥/私钥进行签名。您要寻找的方法是这个:https://github.com/auth0/node-jsonwebtoken#jwtverifytoken-secretorpublickey-options-callback

这些测试展示了如何使用它的示例:

https://github.com/auth0/node-jsonwebtoken/blob/master/test/jwt.rs.tests.js

你也可以使用 http://jwt.io

阅读更多 →

javascript - 在哪里存储 JWT 客户端凭证授权

我有一个 NodeJS Express 应用程序,它通过客户端凭证授权向认证服务器进行身份验证。我收到的令牌用于从 API 加载数据。

在整个应用程序中存储令牌的最佳做法是什么?

请注意,JWT 不是针对特定用户的,因为我的 Express 应用是客户端。

答案#1

我会把它存储在内存中。通常我会写一个单例模块来处理它。

auth.js:

class Auth { getToken() { // check if we has token already an

阅读更多 →

javascript - 如何将 jwt 身份验证与 ACL 混合使用

我已经能够使用 JWT 策略实现 Passport,并且运行良好。我的 JWT 保护的路由如下所示...

app.get('/thingThatRequiresLogin/:id', passport.authenticate('jwt', { session: false }), thingThatRequiresLogin.findById);

现在我需要将某些内容的访问限制为仅属于某些角色的已登录用户。我希望我能像这样表达:

app.get('/thingThatRequiresLogin/:id', MAGIC, thingThatRequiresLogin.find

阅读更多 →

安全性 - JWT 令牌签名验证 JavaScript

我正在制作一个使用 JWT 令牌连接到 API 的 JavaScript 客户端。在服务器端没有问题,我可以创建令牌、签署它,并且稍后验证签名,从而确保没有人篡改令牌。

但是我如何在客户端执行此操作。我可以解码 JWT 令牌并查看头部、有效载荷和签名。但我如何在客户端验证签名呢?有没有用于此的库,我如何将公钥传输到客户端?

如果我不验证签名,我怎么知道令牌没有被篡改?

答案#1

如果我不在客户端验证签名,我如何确保令牌确实来自服务器?也许有中间人正在更改令牌

签名验证不能避免中间人攻击。攻击者即使使用有效的令牌,也可能嗅探通道以捕获凭证或篡改消息

使用 SSL/TLS 通道 (https)

如果我不验证签名,我怎么知道令牌没有被篡改?

由 TLS 受信任服务器

阅读更多 →

javascript - 如何在 xmlhttprequest 中发送 jwt?

我可以将 JWT 令牌存储在本地存储中,但我不知道如何将其作为 Bearer 令牌发送回我的 RESTful API 端点,而且我就是找不到相关信息。如何仅使用 XMLHttpRequest 来做到这一点?

答案#1

这可以通过使用 setRequestHeader() 函数来完成。这个函数用于设置 HTTP 请求头的值。使用 setRequestHeader() 时,必须在调用 open() 之后,但在调用 send() 之前调用它。如果同一个请求头多次调用此方法,这些值会合并为一个单独的请求头。

阅读更多 →

javascript - 如何在前端使用 fetch 存储和处理 JWT 令牌,以及如何存储它?

我刚接触开发,我有一个任务管理应用,其中我使用 JWT 令牌进行验证,我可以在 Postman 上让它工作,但我无法弄清楚如何通过浏览器存储它并发送到服务器。

这是我正在尝试做的以使其工作,但在事件监听器之外它显示为未定义,而且我无法存储该令牌以便稍后将其发送到另一个 URL,我正在将该令牌发送到一个 API。

这是我的前端 app.js 代码,用于登录页面,登录时用户会收到一个 JWT 令牌:

let inMemoryToken; const si

阅读更多 →

javascript - NestJS - 如何在 JWT 中使用 RoleGuard?

目前,我已经设法将 AuthGuard 与 JWT 认证一起使用,但我无法在 Roles 上获取 user。

我尝试过模仿猫的例子,但我从未定义过user对象,你可以在第14行看到。

这是我的代码:

// auth.controller.ts @Controller('auth') @UseGuards(RolesGuard) export class AuthController { constructor(private readonly authService: AuthService) {} @Get('token') as

阅读更多 →

angular - Angular2,Auth0 连接到 Fitbit API,JWT 需要3部分

我目前正在使用 Angular2,我正尝试通过 auth0 连接到 Fitbit API。我正在使用 Angular2-JWT 和 Auth0 提供的 Lock.js。到目前为止,使用 Lock.js 生成的 id_token 登录并读取简单的个人资料数据都非常顺利,但是当我想获取像活动这样的信息时,请求 API 就会出错。

但是后来我注意到,除此之外,Lock.js 还提供类似 Access_token 的东西。我一直以为这是正确使用的。

我通过以下方式获取 id_token/access_token。

@Injectable() export class Auth { // Configure Auth0 lock = new Auth0Lock('[CENSORED]', '[CENSORED],{}); constructor() { // Add callback for lock `authenticated` event this.lock.on("a

阅读更多 →

javascript - Ionic 2 - 如何使用刷新令牌获取新的 JWT

我有一个使用 Ionic 2 的移动应用程序,它使用 JSON Web 令牌(JWT)来对 Node.js API 上的各种路由进行身份验证。这些 JWT 的过期时间很短,需要使用刷新令牌进行刷新。刷新令牌只是一个随机字符串,存储在数据库和移动设备上。请注意:我没有使用 OAuth。

我如何重构我的 API 调用,使它们都通过一个方法发送请求,如果初始 API 调用因为 JWT 过期而返回 401 未授权响应时,该方法可以发送刷新令牌?否则,我将需要在每个 API 调用中编写处理该响应的逻辑,而我希望避免这样做。

这是我在 TypeScript 中实现的一个调用 API 的方法示例。它目前还没有处理 401 未经授权的响应,也还没有发送刷新令牌:

public setBeerPref(beerPrefs) { return new Promise((resolve, reject) => { this.storage.get('email').then((email) => {

阅读更多 →

angular - 为什么 AuthHttp (angular2-jwt) 不能被依赖注入到组件中?

更新:已找到解决方案

这相当简单(虽然找到问题非常困难),配置是错误的。为了得到正确的设置,我更新了我的 package.json(dependencies 部分)和 tsconfig.json,使其类似于 angular.io 的示例。

这些变化中最显著的是:

  • 将 Angular npm 包从“~4.0.0”更新到“~4.2.0”
  • 将 tsconfig.json 中的模块从 "system" 更改为 "commo

    阅读更多 →