Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >Nodejs -是否有必要解码身份验证令牌?

Nodejs -是否有必要解码身份验证令牌?
EN

Stack Overflow用户
提问于 2013-12-08 07:32:13
回答 2查看 1.2K关注 0票数 0

我在服务器端使用Node.js和Passportjs的组合,在客户端使用Emberjs作为应用程序。我当前的身份验证策略是使用Passport来以普通电子邮件/密码组合作为标准对用户进行身份验证,然后挂接会话创建机制以生成身份验证令牌,该令牌被保存到一个单独的表中,然后传回给用户,以便在任何进一步的受保护路由中使用。(传入REST标题)。

创建令牌是很好的,我是这样做的,没有问题,但是如果我需要额外的一步的话,我很难解决这个问题。

目前,我使用节点-jwt-简单生成令牌,使用随机节点-uuid pass作为有效负载,用户UID (另一个节点-uuid)作为秘密。然后,我将其保存到客户端的$.cookie、服务器端的表以及创建日期。

显然,节点-jwt-简单中的一个步骤是对令牌进行编码。还提供了解码功能。我的问题是,在我进行auth检查时,是否需要将令牌解码成某种东西,还是只需要检查用户的会话cookie (REST头),以便与数据库中的令牌匹配?我不想费尽心机地生成一个令牌,结果却错过了一个重要的步骤,但我不知道如何将它解码成任何能够提供任何额外的有用安全性的东西。

更新:

我想我昨晚解决了这个问题

解决方案似乎是使用用户的UID作为JWT的有效负载,将静态字符串作为秘密(取自类似于服务器环境变量或类似的内容),然后只将编码的令牌存储在数据库中。将令牌传回给客户端,以便重新使用,然后当客户端试图访问受保护的路由时,他们必须将它们的UID连同编码的令牌一起传递给服务器,然后服务器被解码,并将解码的有效负载与已传递的UID相比较。如果它们匹配,那么auth就成功了,否则令牌就会被销毁,用户必须再次登录。通过这样做,它使令牌的存储实际上是毫无用处的,而不知道秘密密钥,也不知道用户的UID,但却使auth进程更加安全。

EN

回答 2

Stack Overflow用户

发布于 2013-12-08 09:12:58

如果您不验证令牌,您还可以创建一些其他随机数据作为会话cookie使用,只要它是唯一的,并且不能被客户端猜测。

但是,由于您已经做了大量的工作,您可以在令牌中编码一些有用的东西,它可以告诉您它的有效时间,例如exp字段,因此您不必从数据库中读取。

我不确定我是否完全理解您的JWT,但我看到的问题是,您需要信息来解码可能不在您手上的令牌。所以你必须在你的数据库里搜索。

我认为使用一些随机会话密钥就足够了,例如,以下功能:

代码语言:javascript
代码运行次数:0
复制
var crypto = require('crypto');

/**
 * Create random bytes and encode base64url.
 * @param {int} [lengthInBytes=40] the size of the raw token in bytes
 *        (will be longer since base64url-encoded)
 * @param {function} callback node-style callback-function;
 *        data-parameter is a string w/ a shortened (no trailing ==)
 *        base64url-encoded string of the generated bytes.
 */
exports.createRandomToken = function createRandomToken(lengthInBytes, callback) {
    if (typeof lengthInBytes === 'function') {
        callback = lengthInBytes;
        lengthInBytes = 40;
    }
    crypto.randomBytes(lengthInBytes, function (ex, buf) {
        if (ex) {
            callback(ex);
            return;
        }
        callback(null, buf.toString('base64')
                          .replace(/\//g, '_')
                          .replace(/\+/g, '-')
                          .replace(/=/g, ''));
    });
};
票数 1
EN

Stack Overflow用户

发布于 2016-07-19 00:37:03

  1. 将令牌的过期时间设置为尽可能小(5分钟、30分钟或没有年份的月份)。
  2. 每次更新旧令牌时,使用刷新令牌获取新令牌和更新刷新令牌(毫无疑问,当用户登录时)
  3. 不要在令牌中存储密码、信用卡号码和任何机密信息(我是shure,您知道的)
  4. 存储检查特权的所有必要信息(例如,检查ip )。它有利于REST和水平扩展。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20455161

复制
相关文章
腾讯云TDP-使用netdata的nodejs环境 snmp插件 监控mikrotik设备带宽
腾讯云TDP-使用netdata的nodejs环境 snmp插件 监控mikrotik设备带宽
root0day
2022/04/24
1.9K0
腾讯云TDP-使用netdata的nodejs环境 snmp插件 监控mikrotik设备带宽
将MySQL复制限制为基于行的事件
在MySQL 8.0.18上进行的后续工作中,我们引入了对从服务器的回放线程进行权限检查功能,在本文中,我们将介绍一项新功能,可以进一步提高安全复制数据的能力,用户可以将复制流限制为仅基于行的事件。
MySQLSE
2020/09/28
9660
将MySQL复制限制为基于行的事件
介绍一款将屏幕录制为gif的软件
在写博客的过程中,发现很多时候需要录制屏幕并制作gif以便展示给大家。例如在这篇文章中,就需要将git的工作过程用动画的形式进行展示。在这里向大家介绍一款录制屏幕制作gif的软件。
大神带我来搬砖
2019/05/15
6920
使用MikroTik产品配置我们的上网环境①
首先我们下载routeros的图形化配置工具winbox https://mikrotik.com/download 目前最新版本为3.18 并且只有exe版本,如果没有windows的同学请先安装wine来启动此程序。
海哥@开发
2022/04/06
2.2K0
使用MikroTik产品配置我们的上网环境①
如何使用文件传输协议ftp,教你使用文件传输协议命令行
FTP是文件传输协议的缩写。顾名思义,FTP用于在网络上的计算机之间传输文件。您可以使用文件传输协议在计算机帐户之间交换文件,在帐户和台式计算机之间传输文件或访问在线软件档案。但是请记住,许多文件传输协议站点已被大量使用,并且在连接之前需要进行多次尝试。
镭速
2023/04/10
9800
如何使用nload实时监控网络带宽
在基于CentOS/RHEL的系统上首先安装epel软件源,可以轻松地安装nload工具。
用户1685462
2021/09/05
7670
QT应用编程: 基于UDP协议设计的大文件传输软件
功能介绍: 软件由客户端和服务器组成,客户端通过 UDP协议不断循环地向服务端发送文件,文件传输速率可以达到10MB/s以上,文件传输后支持自动删除,客户端上可以支持每分钟创建一个文件并以时间戳命名,每个生成的文件可以设置大小,默认大小为6GB; 服务端收到文件之后,将文件进行存储到本地,可以指定时间自动删除文件; 服务端可以动态计算传输速率,并写入日志文件; 服务器可以支持同时接收多个客户端的文件上传。
DS小龙哥
2022/01/07
2.7K0
QT应用编程: 基于UDP协议设计的大文件传输软件
Lighthouse Router (二):在腾讯云轻量应用服务器上使用 MikroTik RouterOS 在数据中心之间配置隧道
  RouterOS 是由 MikroTik 公司开发的基于 Linux 内核的路由操作系统,是目前功能较强、应用较广的一款软路由系统,适用于中小企事业单位、网吧、宾馆和运营商。通过该软件可以将标准的 PC 电脑变成专业路由器,在软件的开发和应用上可以不断地更新和发展,使其功能在不断增强和完善。特别在无线、认证、策略路由、带宽控制和防火墙过滤等功能上有着非常突出的功能。   本文旨在介绍在腾讯云轻量应用服务器上使用 MikroTik RouterOS CHR 6.48.1 在腾讯云新加坡数据中心和 AWS 新加坡数据中心的两台服务器上配置隧道。   需要注意的是,本文所操作的服务器均位于新加坡共和国,服务器之间的加密数据通信均属新加坡共和国国内通信交换,符合相关法律法规。   本文为《Lighthouse Router (一):在腾讯云轻量应用服务器上安装 MikroTik RouterOS 并配置简单的端口转发》一文的续集。若您尚未了解 MikroTik RouterOS 的安装和配置,请移步 https://www.idc.moe/archives/qcloud-Lighthouse-RouterOS-1.html 开始您的第一步。
Nyarime
2021/12/14
3.6K0
Lighthouse Router (二):在腾讯云轻量应用服务器上使用 MikroTik RouterOS 在数据中心之间配置隧道
如何使用nload实时监控网络带宽
nload是一个可实时监视网络流量和带宽使用情况的工具。它可以帮助你使用图表监输入和输出的流量,并提供其他信息,例如传输的数据总量和最小/最大网络使用率。
用户1685462
2021/09/05
8380
如何使用nload实时监控网络带宽
在基于CentOS/RHEL的系统上首先安装epel软件源,可以轻松地安装nload工具。 安装
用户5005176
2021/09/08
1.2K0
使用MikroTik产品-解决NS游戏联机问题②
在上一次我们聊了基础的网络配置已经可以正常上网了,但在日常使用中你可能还会遇到以下几个问题:
海哥@开发
2022/04/06
1.5K0
使用MikroTik产品-解决NS游戏联机问题②
P2P如何将视频直播带宽降低75%?
实时直播经过去年的千播大战后已经成为互联网应用的标配技术,但直播平台的成本却一直居高不下,各个平台除了挖主播、挖网红以外,其背后高额的带宽费用也是他们最大的一块成本。
LiveVideoStack
2021/09/02
9250
P2P如何将视频直播带宽降低75%?
Sublime text3 将代码复制为RTF或HTML的方法
添加下面url: https://github.com/n1k0/SublimeHighlight/tree/python3
飞奔去旅行
2019/06/13
1.8K0
Sublime text3 将代码复制为RTF或HTML的方法
使用MikroTik产品-关于网络加速的一些问题③
上次的网游加速文章发表后,有人留言问了机房的选择问题,这个不是一句两句能说明白了,我单开文章进行一下说明。
海哥@开发
2022/04/06
1.2K0
使用MikroTik产品-关于网络加速的一些问题③
Lighthouse Router (2): 在腾讯云轻量上使用RouterOS在数据中心间建立隧道
RouterOS 是由 MikroTik 公司开发的基于 Linux 内核的路由操作系统,是目前功能较强、应用较广的一款软路由系统,适用于中小企事业单位、网吧、宾馆和运营商。通过该软件可以将标准的 PC 电脑变成专业路由器,在软件的开发和应用上可以不断地更新和发展,使其功能在不断增强和完善。特别在无线、认证、策略路由、带宽控制和防火墙过滤等功能上有着非常突出的功能。
iks
2021/12/12
2.8K0
Lighthouse Router (2): 在腾讯云轻量上使用RouterOS在数据中心间建立隧道
MikroTik RouterOS 产品初识
MikroTik这家公司部位于拉脱维亚,97年开发出RouterOS系统,02年开始销售自有硬件。我从2010年使用到现在才发现RouterOS真是最好用的路由系统,高灵活、可配置的系统。可以跑在x86、mips、arm、tile各种CPU上。如果只是为了试用或者不怕费电,完全可以跑在x86架构老主板上。但是我这篇文章主要介绍的是自家硬件也就是RouterBoard。我们来看看ROS的部分优点:
海哥@开发
2022/04/06
3.3K0
MikroTik RouterOS 产品初识
使用iftop查看实时使用带宽
介绍给大家一个软件,用来查看实时带宽,通用于包括阿里云在内的几乎所有Linux操作系统,首页我们要安装它。相关命令如下: #如果你是centos系统,执行: yum install iftop #如果你是debian/ubuntu系统,执行: apt-get install iftop 观看一下提示,是否安装成功,或者,直接执行iftop,看是否运行来判断是否安装成功。如果安装不成功,可以使用以下命令,编译安装执行,通用于centos操作系统: yum -y install flex byacc libpc
用户1700948
2018/05/16
3.5K0
P2P技术如何将实时视频直播带宽降低75%?
实时视频直播经过去年的千播大战后已经成为互联网应用的标配技术,但直播平台的成本却一直居高不下,各个平台除了挖主播、挖网红以外,其背后高额的带宽费用也是他们最大的一块成本。
JackJiang
2018/08/29
5.5K0
为什么 DNS 协议使用 UDP?只使用了 UDP 吗?
为什么 DNS 协议使用 UDP 呢?这个问题可能大部分同学在各种博客或者面试过程中都或多或少遇见过,张口就来,UDP 快啊,DNS 使用 UDP 使得打开网页速度更快。
飞天小牛肉
2021/04/26
6.3K0
为什么 DNS 协议使用 UDP?只使用了 UDP 吗?
点击加载更多

相似问题

园区网络的Mikrotik带宽整形

127

UDP文件传输-是的,UDP

51

UDP文件传输Python

12

MikroTik热点试用用户带宽限制

12

部分udp文件传输

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文