使用Node.js,Passport进行服务器到服务器身份验证

时间:2014-12-10 01:53:37

标签: node.js session express session-cookies passport.js

我有两个服务在不同的子域上运行:1)Node.js,Express,PassportJS,2)基于PHP。两个服务都暴露在同一个门户中,为了避免要求用户输入两次凭证,我们从PHP服务器调用Node.js登录API。节点返回会话cookie(connect.sid),我们将此转发给客户端,域名设置为<<rootdomain>>.com。现在,当客户端调用Node.js时,我们可以看到cookie被发送到Node但仍然无法进行身份验证。

我已经验证了以下内容:

  1. 从PHP服务器到节点的登录API调用使用connect.sid cookie返回成功,并将会话条目添加到Redis服务器(我们使用Redis存储会话)

  2. Cookie已在浏览器中正确设置

  3. 当浏览器调用Node.js connect.sid时,cookie被发送到服务器

  4. 如果我们直接从客户端调用login API,一切都按预期工作。基本上独立的节点应用程序没有任何问题。

  5. 我很好奇Node是否使用User-agent,IP或其他东西来验证connect.sid cookie?或者它是否与Passport / Express会话参数值相关?可能有什么问题?仅供参考,目前网站在SSL上运行。

    以下是我的会议参数:

    store = new RedisStore({
          port: 6379,
          host: 'localhost',
          client : redis
      });
    var sess = {
      store: store,
      secret: 'some secret',
      rolling: true,
      cookie: { maxAge : 36000000, secure: false },
      saveUninitialized: true,
      resave: true,
    sortName: 0,
    sortModified:0,
    sortSize: 0
    };
    

    提前致谢

0 个答案:

没有答案