网站搜索
我正在尝试创建一个 Node 脚本来验证 JWT 令牌。我有公钥(它是一个 x.509 证书)和 JWT。
我尝试使用 https://github.com/auth0/node-jsonwebtoken,但不幸的是它们似乎不支持 x.509。
如果你知道有可以使用 x.509 证书验证 JWT 令牌的软件包,我将不胜感激。
谢谢!
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
阅读更多 →
我有一个 NodeJS Express 应用程序,它通过客户端凭证授权向认证服务器进行身份验证。我收到的令牌用于从 API 加载数据。
在整个应用程序中存储令牌的最佳做法是什么?
请注意,JWT 不是针对特定用户的,因为我的 Express 应用是客户端。
我会把它存储在内存中。通常我会写一个单例模块来处理它。
auth.js:
class Auth { getToken() { // check if we has token already an 阅读更多 →
我已经能够使用 JWT 策略实现 Passport,并且运行良好。我的 JWT 保护的路由如下所示...
app.get('/thingThatRequiresLogin/:id', passport.authenticate('jwt', { session: false }), thingThatRequiresLogin.findById);现在我需要将某些内容的访问限制为仅属于某些角色的已登录用户。我希望我能像这样表达:
app.get('/thingThatRequiresLogin/:id', MAGIC, thingThatRequiresLogin.find 阅读更多 →我正在制作一个使用 JWT 令牌连接到 API 的 JavaScript 客户端。在服务器端没有问题,我可以创建令牌、签署它,并且稍后验证签名,从而确保没有人篡改令牌。
但是我如何在客户端执行此操作。我可以解码 JWT 令牌并查看头部、有效载荷和签名。但我如何在客户端验证签名呢?有没有用于此的库,我如何将公钥传输到客户端?
如果我不验证签名,我怎么知道令牌没有被篡改?
如果我不在客户端验证签名,我如何确保令牌确实来自服务器?也许有中间人正在更改令牌
签名验证不能避免中间人攻击。攻击者即使使用有效的令牌,也可能嗅探通道以捕获凭证或篡改消息
使用 SSL/TLS 通道 (https)
如果我不验证签名,我怎么知道令牌没有被篡改?
由 TLS 受信任服务器
阅读更多 →
我可以将 JWT 令牌存储在本地存储中,但我不知道如何将其作为 Bearer 令牌发送回我的 RESTful API 端点,而且我就是找不到相关信息。如何仅使用 XMLHttpRequest 来做到这一点?
这可以通过使用 setRequestHeader() 函数来完成。这个函数用于设置 HTTP 请求头的值。使用 setRequestHeader() 时,必须在调用 open() 之后,但在调用 send() 之前调用它。如果同一个请求头多次调用此方法,这些值会合并为一个单独的请求头。
阅读更多 →
我刚接触开发,我有一个任务管理应用,其中我使用 JWT 令牌进行验证,我可以在 Postman 上让它工作,但我无法弄清楚如何通过浏览器存储它并发送到服务器。
这是我正在尝试做的以使其工作,但在事件监听器之外它显示为未定义,而且我无法存储该令牌以便稍后将其发送到另一个 URL,我正在将该令牌发送到一个 API。
这是我的前端 app.js 代码,用于登录页面,登录时用户会收到一个 JWT 令牌:
let inMemoryToken; const si 阅读更多 →
目前,我已经设法将 AuthGuard 与 JWT 认证一起使用,但我无法在 Roles 上获取 user。
我尝试过模仿猫的例子,但我从未定义过user对象,你可以在第14行看到。
这是我的代码:
// auth.controller.ts @Controller('auth') @UseGuards(RolesGuard) export class AuthController { constructor(private readonly authService: AuthService) {} @Get('token') as 阅读更多 →我目前正在使用 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 阅读更多 →我有一个使用 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) => { 阅读更多 →
这相当简单(虽然找到问题非常困难),配置是错误的。为了得到正确的设置,我更新了我的 package.json(dependencies 部分)和 tsconfig.json,使其类似于 angular.io 的示例。
这些变化中最显著的是: