Windows 7 安全模型 - Windows XP 和 Active Directory 之间的差异

2 active-directory windows-7 delphi

我有一个 Delphi 程序来验证与 Active Directory 集成的系统上的用户凭据。

在 Windows XP/2000 上,当用户提供无效凭据时,程序/系统会按预期执行。在 Windows 7 系统上,该过程不会验证凭据,并允许用户无需检查即可继续。

GAT*_*awn 5

这听起来像是您的应用程序处理登录/身份验证的方式中的一个错误,听起来它可能会遇到它无法理解的身份验证类型并通过允许用户进入“失败安全”。

Windows 7(和 Vista)更改了许多与安全和身份验证相关的设置和默认值。例如,默认情况下,7 不再发送 LanManager 或 NTLMv1 身份验证,它只会发送 NTLMv2。我们已经看到了使用 Java 模块对 AD 进行身份验证的 3rd 方应用程序的一些奇怪行为,这些行为可以追溯到这一点。

最简单的测试方法是将 7 台机器设置回 XP 行为(它尝试使用 NTLMv2 进行身份验证,然后如果应用程序无法理解,则回退到安全性较低的协议)。

将您的登录安全性降级到 XP 级别的注册表项是:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"LmCompatibilityLevel"=dword:00000001
Run Code Online (Sandbox Code Playgroud)

(win7 的默认 LmCompatibilityLevel 是 3)

或者,您可以使用 GPO 设置相同的内容。您要查找的策略设置位于“计算机配置”>“Windows 设置”>“安全设置”>“本地策略”>“安全选项”中,称为“网络安全:LAN Manager 身份验证级别”

显然,您真的应该只为了测试而这样做,您不希望在没有完全了解风险的情况下让您的客户长期处于较低的安全级别。

您可以在此处找到这些身份验证设置的详细说明:TechNet 有史以来最容易被误解的 Windows 安全设置此处提供有关NTLM 身份验证更改的更多信息。