如何使用NodeJS进行单点login?

我有多个networking应用程序跨多个域运行。

我想实现单一login,以便用户login一次访问所有的应用程序。

我应该如何执行这个? 所有的应用程序都使用NodeJS后端。

一般指针正确的方向是受欢迎的。

谢谢

由于您的应用程序在不同的域上运行,因此无法在客户端计算机上运行的这些APPS之间共享cookie以validation用户。 所以不知何故信息需要在服务器端共享。 我想到的最简单的解决scheme是 –

  1. 为所有服务器共享一个会话。

  2. Hava特定的身份validation域,并在需要身份validation时redirect用户。 在那里对用户进行身份validation,然后设置会话Cookie或令牌。

  3. 每当你的任何应用程序需要身份validation,redirect到身份validation域。 身份validationcookie将被提供给身份validation域以及引用域。 在看到您已经validation的情况下,validation服务器可以使用正确的sessionID将其redirect到原始应用程序,该会话ID将被设置为该域的cookie。

  4. 如果没有通过身份validation,则会要求用户在身份validation服务器上进行身份validation,然后进行redirect。

  5. 几乎没有变化,你可以使用令牌来实现这一点,而不需要共享会话。

在实施之前正确validation状态。 在你的机制中更多的国家意味着更多的错误和可能的攻击机会。
考虑移动你的应用程序在同一个子域。 如果authentication机制相同,那么所有人都知道所有的应用程序都属于同一家公司。 人们也会更容易记住同一个域上的各个子域,而不是记住所有不同的域。

最常用的项目是http://passportjs.org/ ,它几乎是我使用的唯一一个,它具有像ADFS这样的内部连接,以及像谷歌,脸书这样的第三方连接。