我有一个Delphi程序来validation我的系统与Active Directory集成的用户凭据。
在Windows XP / 2000上,当用户显示无效凭据时,程序/系统按预期执行。 在Windows 7系统上,该过程不validation凭据,并允许用户在没有检查的情况下继续。
这听起来像你的应用程序正在处理login/authentication的方式中的一个错误,听起来好像它可能会打到一个认识types,它不明白,允许用户进入“失败的安全”。
Windows 7(和Vista)改变了很多安全和authentication相关的设置和默认设置。 例如,默认情况下,7不再发送LanManager或NTLMv1authentication,它只会发送NTLMv2。 我们已经看到第三方应用程序使用Java模块对AD进行身份validation的一些奇怪行为,这些模块已经追溯到这一点。
最简单的testing方法是将7台机器重新设置为XP行为(使用NTLMv2进行身份validation,如果应用程序无法理解则返回到不太安全的协议)。
将您的login安全性降级到XP级别的registry项是:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa] "LmCompatibilityLevel"=dword:00000001
(win7的默认LmCompatibilityLevel是3)
或者,您可以使用GPO设置相同的内容。 您正在查找的策略设置位于计算机configuration> Windows设置>安全设置>本地策略>安全选项中,称为“networking安全:LANpipe理器身份validation级别”
很明显,你应该只是做这个testing,如果没有完全理解风险,你不想长期把客户的安全级别降低。
您将在这里find这些身份validation设置的一个很好的描述: TechNet是所有时间最被误解的Windows安全设置 。 有关NTLM身份validation更改的更多信息,请参阅此处 。