着重介绍两中方法使用AD 用户验证机制,
方法1:SSPI
验证此方法具有不需要任何特殊的权限,以及所有版本的 Windows 上工作的优点。 最终结果使用 SSPI 服务验证凭据的是类似于调用 LogonUser API 与 LOGON32_LOGON_NETWORK 登录类型登录。 这种类型的登录,最大缺点是您不能访问远程网络模拟网络类型登录后的资源。 如果您的应用程序调用 LogonUser 与 LOGON32_LOGON_INTERACTIVE 登录类型来替代方法 Windows NT 无法执行委派,然后 SSPI 登录 / 验证可能不会一种可行的替代方法
要使用 Windows 95、 Windows 98 和 Windows Millennium Edition 上的这种方法,您还必须启用 NTLM 安全服务,通过打开控制面板、 网络、 访问控制,然后选择用户级访问控制。
在 Windows XP 上默认情况下在以下注册表项 ForceGuest 注册表值设置为 1:
在 Windows XP 计算机上的是工作组的成员:
- 如果启用了 ForceGuest (设置为 1,SSPI 将总是尝试使用来宾帐户登录。
- 如果启用了来宾帐户则的 SSPI 登录会为来宾成功输入 任何 用户凭据。
- 如果禁用来宾帐户的 SSPI 登录将甚至失败有效凭据。
- 如果禁用 ForceGuest (设置为 0),SSPI 作为指定的用户而将登录。
此外,如果启用了来宾帐户则 SSPI 登录可能会成功为来宾用户凭据无效的。 本文中的代码 C 的示例演示了如何可以检查建立的安全上下文的访问令牌。 IsGuest Helper 函数,在示例代码显示了如何验证登录出现为指定的用户或来宾。
/////////////////////////////////////////////////////////////////////////////////////////////////////////
//一下代码是用于AD中用户名、密码的验证
// 执行: ***.exe 域名 登陆账号 如 a.exe test.com.cn test
// 详情请见http://support.microsoft.com/default.aspx?scid=kb;en-us;180548
// 中文 :http://support.microsoft.com/kb/180548