首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个实例的auth0+passport.js重定向太多

多个实例的auth0+passport.js重定向太多
EN

Stack Overflow用户
提问于 2019-07-30 02:53:58
回答 1查看 234关注 0票数 1

基础设施:

cloud: aws beanstalk为容器代理服务器应用程序负载均衡器打开nginx -仅https,私有子网中的默认进程(https) 2+实例在https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-endtoend.html https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/https-singleinstance-docker.html之后启用端到端加密

运行docker的实例上的自签名证书

在本地,我们有一个3容器来模拟基础设施,

1 nginx: 443作为负载均衡,https反向代理2 app容器: 3000:3000,3001:3001,所以还没有端到端加密

软件: autho passport (https://github.com/auth0/passport-auth0) express react cookie-session包

代码语言:javascript
复制
const sessionConfig = {
  name: 'sessionId',
  secret: uid.sync(18),
  secure: true,
  httpOnly: true,
  secureProxy: true,
  maxAge: 1800 * 1000
};

工作流程:打开网站,点击登录链接,跳转到auth0登录页面,输入用户名/护照后,点击提交。

当我们有超过1个实例在运行时,我们遇到了“重定向太多次”的问题。如果我在aws中打开目标组的粘滞会话,问题就会消失。

我们在本地docker环境中也看到了同样的情况。

在这段代码中,

代码语言:javascript
复制
 router.get('/callback', (req, res, next) => {
    authenticate('auth0', (authErr, user) => {
      if (authErr) {
        console.error(`Error authenticating user: ${authErr}`);
        return next(authErr);
      }
      if (!user) {
        console.info(`No user data, redirecting to login page`);
        return res.redirect('/login');
      }

逻辑总是命中- if (!user),我们不确定为什么多实例负载均衡器设置会发生这种情况。

更新:

抱歉,我是个新手,

我想知道是否可以使用cookie-session而不是express-session,因为JWT应该不在服务器上存储信息。

我之所以问这个问题,是因为我读过一些关于passport和Auth0的教程,其中也提到了expression-session。

既然Auth0使用的是JWT,我可以使用cookie-session吗?如果是这样,我能做错什么呢?

PS。下面是我的会话配置:

代码语言:javascript
复制
const sessionConfig = {
  name: 'sessionId',
  domain: 'example.com',
  secret: uid.sync(18),
  secure: true,
  httpOnly: true,
  maxAge: 1800 * 1000
};

请给我建议和帮助。谢谢!杰伦

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-02 03:48:45

问题已解决。

这是因为密钥是随机的,所以固定的密钥不会在服务器之间共享。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57259876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档