2017-10-13 66 views
0

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

+0

您对“认证用户的会话管理”是什么意思?您是否想临时缓存身份验证身份以加速后续请求?或者你指的是有状态的jwt? – Asanka

回答

-1

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

您可以将JWT令牌发送到客户端并将其存储在Web浏览器(本地存储,会话存储或Cookie)中,该浏览器提供状态的持久性(Acts作为会话,并且对令牌持续时间有效)。

对于所有后续请求,您需要将授权标题中的JWT发送回您的快递服务器。

如果您的API被除浏览器之外的其他客户端使用,例如移动应用程序可以实现统一的状态管理,那么这将比会话有优势。

为了最大限度地降低需要高安全性的应用程序在LocalStorage中存储id令牌的风险,请将令牌持续时间缩短并使用刷新令牌生成新令牌。

注意:如果您使用Cognito Hosted UI,则需要使用Cognito Autorization代码授权流来获取刷新令牌。

+0

我认为将JWT暴露给Web浏览器并将其用于会话是非常危险的,因为它会打开会话劫持的内容。我建议不要混淆认证和会话管理。 – galaxy

+0

@galaxy这是一个永无止境的话题,它基本上会增加主观意见。在回答之前,我已经完成了检查。我可以向你提供两个不同的参考资料(阅读超过25+),这些参考资料反映了我提供的答案。朝 - https://auth0.com/blog/cookies-vs-tokens-definitive-guide/和反对 - http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-换会话/。我必须评估一个企业客户的方法,所以我也向这个主题咨询过安全专家。如果您需要,我可以分享更多信息。查看更新的答案以获取更多详细信息 – Ashan

+0

您的第二个链接实际上是唯一一个关于该主题的链接,并且由实际理解*身份验证*和会话维护之间区别的人编写。 Auth0的一个很奇怪,他们认证过程与会话管理混淆,所有问题都来自于混淆。一个会话并不关心你是否被认证 - 它只是应该继续定义的状态(你实际上可以存储一个实体被认证的属性)。 – galaxy