从Node中的Active Directory获取经过身份验证的用户组

时间:2016-03-31 19:20:36

标签: node.js iis active-directory windows-authentication

我们被要求将我们的NodeJS应用程序移动到IIS(Windows Server 2012R2)下运行并与现有的Active Directory集成。我们被要求删除登录页面,而是使用Windows身份验证来获取(已经过身份验证的)用户的ID,并使用他/她所属的组来控制他们在应用程序中的授权级别。

我已安装iisnode在IIS下运行我的应用,并认为我会使用passport-windowsauthnode-activedirectory来获取群组成员资格。但是,两者都需要用户/密码来验证用户。我的用户已经过身份验证,我无权访问他的密码(我也不应该)。

如何从Active Directory获取经过身份验证的用户组?

这是我到目前为止所拥有的:

  1. 安装并配置了iisnode
  2. 为网络应用启用了Windows身份验证
  3. 将此添加到web.config:<iisnode promoteServerVars="AUTH_USER,AUTH_TYPE" />
  4. 在我的index.js文件中,我可以console.log(req.headers['x-iisnode-auth_user']);获取正确的用户名 - 但我不知道如何从这里开始获取他/她的群组
  5. 在任何情况下我都不想重新询问用户他/她的密码

1 个答案:

答案 0 :(得分:7)

好吧,似乎没有人有兴趣看这个问题:)。我假设IIS + Node.js + Active Directory是一个边缘情况。 以下是我最终解决这个问题的方法:

  1. 将特殊用户添加到只能从IIS计算机登录的Active Directory(奖励:限制该用户的IP /进程/访问权限)。
  2. 将AD详细信息,用户名和密码添加到config.json文件中(请参阅snippet)。
    确保将文件添加到.gitignore,以便它不会以repo结尾。
  3. 使用node-ActiveDirectory首先以步骤1中的用户身份登录,然后询问已登录用户的组(请参阅snippet)。