NodeJS - 使用Active Directory进行身份验证

时间:2016-02-03 09:12:39

标签: node.js authentication active-directory authorization

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

所以我的第一个问题:是否可以使用nodejs?如果是这样,有人可以请我指向相关文章/文档/插件吗?

我的第二个问题是关于身份验证本身。 我的服务器很安静,所以每次我从服务器请求时,我都必须提供某种形式的识别。

我关于下一个流程:

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

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

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

一旦验证完毕,我就为用户创建了一个令牌。 客户端的每个请求都必须包含有效的令牌。

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

然而有些事情困扰我。

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

我可以设置令牌到期,但除非该到期时间为1秒,否则服务器将无法与活动目录保持同步。

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

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

谢谢, 阿里克

1 个答案:

答案 0 :(得分:1)

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

不幸的是,我对第二个问题一无所知。是的,可以检查。
您可以使用node-activedirectory中的authenticate函数,然后使用isMemberOf函数。 node-activedirectory工作正常,所以你可以每次都进行身份验证,这是一个问题。

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

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

问候,Rafał