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.
这两台机器 完全不同,但在我认为应该重要的任何方面都不一样。
设置如下:
开发机
- Windows 2008
- ColdFusion 11 开发者版
- Java 8.0.25.18
量产机
- Windows 2008 R2
- ColdFusion 10 标准版
- Java 8.0.710.15
活动目录机器
- Windows SBS 2011
值得注意的是,虽然这些机器并不相同,但两者都能够通过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。
我不确定如何实现,所以现在已经恢复到 本地系统 用户,但我可能会重新访问并更新我的答案。
我正在使用 ColdFusion 提供的 coldfusion.security.NTAuthentication
来整合 Windows SBS 上的活动目录设置,目的是返回特定用户所属的组。
在我的开发机器上,这工作得非常好 - 但是在实际机器上我看到以下错误:
Error in locating groups for user XXX in domain XXX.
这两台机器 完全不同,但在我认为应该重要的任何方面都不一样。
设置如下:
开发机
- Windows 2008
- ColdFusion 11 开发者版
- Java 8.0.25.18
量产机
- Windows 2008 R2
- ColdFusion 10 标准版
- Java 8.0.710.15
活动目录机器
- Windows SBS 2011
值得注意的是,虽然这些机器并不相同,但两者都能够通过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。
我不确定如何实现,所以现在已经恢复到 本地系统 用户,但我可能会重新访问并更新我的答案。