【问题标题】:NodeJS - Authentication with Active DirectoryNodeJS - 使用 Active Directory 进行身份验证
【发布时间】:2016-05-12 09:28:36
【问题描述】:

我正在构建一个 nodejs 服务器,我决定通过活动目录执行身份验证。

所以我的第一个问题:nodejs 有可能吗?如果是这样,有人可以指导我阅读相关文章/文档/插件吗?

我的第二个问题是关于身份验证本身。 我的服务器很安静,所以每次我向服务器请求某些内容时,我基本上都必须提供某种形式的身份证明。

我想到了下一个流程:

在客户端的登录页面,我将用户名和密码发送到服务器。

在服务器上,我使用客户端发送的凭据向 Active Directory 进行身份验证。

一旦我收到来自 Active Directory 的响应,我会检查它是否是有效响应,如果登录成功,我还会检查用户是否在 Active Directory 中拥有使用我的服务的适当权限。

验证完所有内容后,我会为用户创建一个令牌。 来自客户端的每个请求都必须包含一个有效的令牌。

这似乎是解决此问题的最标准方法,它比在每次请求中发送用户名/密码并每次都使用主动方向进行身份验证要简单和安全得多。

但是有些事情困扰着我。

例如:如果系统管理员决定从活动目录中删除用户或删除他使用我的服务的权限怎么办?该用户仍然有一个令牌,允许他访问我的服务。

我可以设置令牌的过期时间,但除非过期时间为一秒,否则服务器不会真正与活动目录同步。

你认为令牌是解决这个问题的方法吗?还是我应该通过发送每个请求的用户名和密码来做到这一点?

另一种方法是给客户端一个令牌,但在服务器上,将该令牌与活动目录用户名和密码相关联。每个请求,服务器都会使用活动目录进行身份验证?这是一个好方法吗?

谢谢, 阿里克

【问题讨论】:

    标签: node.js authentication active-directory authorization


    【解决方案1】:

    我写这篇文章有点晚了,但是:我还在创建一个使用 node-activedirectory 的 node.js ember 应用程序。当然可以使用 node.js:node-activedirectory 或 ldapjs。

    不幸的是,我对第二个问题一无所知。是的,可以检查。
    您可以使用 node-activedirectory 中的身份验证功能,然后使用 isMemberOf 功能。 node-activedirectory 运行良好,因此您可以每次都进行身份验证,这是一个问题。

    是的,如果用户已登录,他将被记录到会话或 cookie 过期(无论您想选择什么) ,或者您可以创建类似的内容:每次刷新页面后 node-activedirectory 仅检查用户是否存在。 userExists

    我希望我已经清除了你的一些想法。

    你好,拉法尔

    【讨论】:

      最近更新 更多