Jwt 在Express会话上使用AWS Cognito进行会话管理

Jwt 在Express会话上使用AWS Cognito进行会话管理,jwt,amazon-cognito,express-session,Jwt,Amazon Cognito,Express Session,我在应用程序中使用AWS Cognito对用户进行身份验证。AWS为我们提供JWT令牌。我的问题是,我们是否需要使用express session来处理会话管理,或者AWS Cognito提供的JWT令牌是否会为经过身份验证的用户进行会话管理。当您使用Cognito JWT令牌时,您不需要显式的会话处理程序 您可以将JWT令牌发送到客户端,并将其存储在web浏览器(本地存储、会话存储或Cookie)中,该浏览器提供状态的持久性(充当会话,并在令牌持续时间内有效) 对于所有后续请求,您需要将JWT

我在应用程序中使用AWS Cognito对用户进行身份验证。AWS为我们提供JWT令牌。我的问题是,我们是否需要使用express session来处理会话管理,或者AWS Cognito提供的JWT令牌是否会为经过身份验证的用户进行会话管理。

当您使用Cognito JWT令牌时,您不需要显式的会话处理程序

您可以将JWT令牌发送到客户端,并将其存储在web浏览器(本地存储、会话存储或Cookie)中,该浏览器提供状态的持久性(充当会话,并在令牌持续时间内有效)

对于所有后续请求,您需要将JWT in授权头发送回express服务器

如果您的API被web浏览器(如移动应用程序)以外的客户端使用,那么它将比会话具有优势,在会话中,它可以实现统一的状态管理

要将需要高安全性的应用程序在LocalStorage中存储id令牌的风险降至最低,请减小令牌持续时间并使用刷新令牌生成新令牌


注意:如果您使用Cognito托管的UI,您将需要使用Cognito Autorization code grant flow来获取刷新令牌。

我认为将JWT暴露于web浏览器并将其用于会话是危险的,因为这会为会话劫持打开局面。我建议不要混淆身份验证和会话管理。这是一个永无止境的主题,基本上会添加主观意见。我在回答之前已经检查过了。我可以给你指出两个不同的参考资料(阅读超过25+),它们与我提供的答案一致或相反。赞成和反对。我不得不为一个企业客户评估这种方法,所以我也就这个话题咨询了安全专家。如果你需要,我可以分享更多的信息。查看更新的答案以了解更多详细信息。您的第二个链接实际上是该主题上唯一的链接,并且是由真正了解身份验证和会话维护之间区别的人编写的。Auth0的一个问题很奇怪,他们将身份验证过程与会话管理相混淆,所有问题都来自于这种混淆。会话不关心您是否经过身份验证—它只应保留已定义的状态(在该状态下,您可以实际存储实体经过身份验证的属性)。您所说的“身份验证用户的会话管理”是什么意思?是否要临时缓存经过身份验证的标识以加速后续请求?或者你指的是有状态的jwt?