繁体   English   中英

如何将JWT用于使用Node.js编写的代理服务器?

[英]How to use JWT for a proxy server written using Node.js?

这绝对是一个新手问题,我是Node.js初学者。

我不确定,这是问这个问题的正确地方。 但是我可能需要这个庞大社区的想法。 因此,让我解释一下我要做什么。

服务器配置:

  1. Node.js-4.0.0
  2. Hapi.js-10.0.0
  3. 雷迪斯

场景:

我正在使用hapijs在nodejs中编写代理服务器。 我的后端是基于ATG的电子商务网站,并且我的api将被网络浏览器,移动应用等使用。

我们计划不将ATG发送的cookie发送到浏览器和移动设备。

因此,为了维护ATG的会话和cookie,这就是我们进行POC的方式。

首先,我们计划不考虑存储从ATG返回的匿名用户cookie。 因此,我们完成了两个POC。

(我们很多人都知道,匿名cookie是什么,如果我用一个词-Guest Checkout的话,让我解释一下。有很多方法可以实现这一点。但是我的Commerce Backend是这样实现的,当我们转到在网站上,您将商品添加到购物车并在没有登录的情况下签出该商品吗?每当我们添加商品时,它们只会存储在您的浏览器Cookie中,而不会存储在持久性数据库中,无论如何用户都想登录/注册从浏览器检索cookie并将其存储在数据库中的帐户(基本上,匿名购物车已转移到已登录的用户。)

POC-1(不考虑访客结帐):

  1. 要访问我的api,用户必须先登录,成功登录后,我们会生成一个rand-token并将其存储在与ATG为已登录用户发送的cookie关联的Redis db中,并将ttl设置为1小时后返回给客户的那个令牌

  2. 现在,无论何时调用任何api方法,都应在授权标头中发送令牌,我将检查令牌的有效性,并再次扩展ttl 1小时,并检索与该令牌关联的cookie,然后在ATG请求选项中设置该cookie并提出要求。

3.注销后,我将清除cookie并删除令牌。

通过在jwt有效负载中生成带有用户登录信息的JWT令牌,我已经成功实现了JWT。 使用了hapi-jwt-auth2。

POC-2(带有维护来宾Cookie),

  1. 我的API将具有终结点/ auth / generatesession,这将返回一个64字节的随机令牌(为此我们使用rand-token npm模块),该令牌将在24小时后失效。

  2. 所有方法都需要将访问令牌在授权标头中传递回给我,我将把令牌ttl延长到24小时。

  3. 现在,他们可以调用任何api方法,例如addtocart或其他方法,即使在将项目添加到cart之后,突然他们也想登录,或者我可以使用其访客会话cookie并在成功登录后将该cart转移到持久数据库。

问题:

  1. 我应该在第二种情况下使用JWT吗? 如果是这样的话,
  2. 如何在第二种情况下实现JWT? (Coz,不知道用户是谁?)
  3. 有人认为这是编写这样的代理服务器的好主意吗?
  4. 如何使用ATG会话到期来简化此令牌的会话到期?
  5. 是否有人像这样使用Node.js? 它如何缩放?
  6. 如果有人愿意给我一个如何编写此代理服务器的想法,它将对我有很大帮助。

抱歉,如果这个问题太长,请以我的解释方式为准。

提前致谢。

  1. 当然可以,为什么不呢?
  2. 您不一定需要用户。 JWT存储任意数据,用户名可以为空白或匿名。 如果用户记录了该日志,并提供了与访客推车相关的令牌,则可以假定允许该用户声明该推车的内容,并且匿名推车可以被销毁。
  3. 当然,这很普遍(免责声明:我从事的工作与您非常相似)。
  4. TTL是合理的,但我不知道什么是ATG或如何处理它。
  5. 是。 只要您确保服务器是无状态的,并且可以通过Redis之类的方法来管理所有状态,它的伸缩性就很好。
  6. 问题范围太广,我只想使用Express + Redis / Mongo / Postgres。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM