coldfusion.security.NTAuthentication:在域 XXX 中为用户 XXX 定位组时出错

coldfusion.security.NTAuthentication: Error in locating groups for user XXX in domain XXX

我正在使用 ColdFusion 提供的 coldfusion.security.NTAuthentication 来整合 Windows SBS 上的活动目录设置,目的是返回特定用户所属的组。

在我的开发机器上,这工作得非常好 - 但是在实际机器上我看到以下错误:

Error in locating groups for user XXX in domain XXX.

这两台机器 完全不同,但在我认为应该重要的任何方面都不一样。

设置如下:

开发机

量产机

活动目录机器

值得注意的是,虽然这些机器并不相同,但两者都能够通过authenticateUser()验证用户] 方法。 这表明 class 正在运行并且能够毫无问题地连接到 AD 服务器。 我还可以使用 <cfldap> 检索有关用户的信息。

下面是一些非常简单的代码:

Local.ntauth            = createObject("java", "coldfusion.security.NTAuthentication");
Local.ntauth.init('MyDomain');
Local.Authenticated     = Local.ntauth.authenticateUser('Username', 'Password'); // Returns 'YES'
Local.Groups            = Local.ntauth.GetUserGroups('Username') // Throws error

问题不仅限于 GetUserGroups 方法,尝试使用 IsUserInGroup.

时也会出现类似的错误

有人能帮忙吗?

这原来是 Windows 权限的问题。 (不就是全部吗?)

所以,我在问题中忽略的一点是,生产 服务器已使用 CF10 Lockdown Guide.

中详述的技术进行保护。

此过程的一部分涉及为 ColdFusion 服务创建专用用户。

如果我使用标准的“Local System”用户,GetUserGroups 功能似乎有效,但如果我使用我专用的 ColdFusion 用户,则无效。

在进程监视器的帮助下,我注意到当调用 GetUserGroups 函数时,会向 Active Directory 服务器调用 /PIPE/Samr

当 ColdFusion 是 运行 Local System 用户时,此调用由 NT AUTHORITY\SYSTEM 和returns 一大堆信息 - 然而,当 ColdFusion 运行 作为新的专用用户帐户时,调用是由该帐户进行的,并且 returns LOGIN FAILED.

大概必须有一种方法可以授予服务器本地的 ColdFusion 用户以允许 GetUserGroups 调用的方式访问 Active Directory。

我不确定如何实现,所以现在已经恢复到 本地系统 用户,但我可能会重新访问并更新我的答案。