在客户端 - 服务器应用程序使用Active Directory用户进行身份验证(Authentic

2019-07-03 19:33发布

我一直要求提供验证用户对我们现有的客户端服务器应用程序的Active Directory支持。

在用户从客户端机器,越过线提供了一个用户名和密码的那一刻(加密)到我们的服务器进程,并与存储在数据库中的用户名/密码相匹配。

起初,我认为这将是解决一个简单的问题,因为我可以简单地从我们的服务器进行身份验证过程对Active Directory用户的名称/密码。 然而事实证明,用户不应该从我们的客户端应用程序输入密码,而不是把它的凭证从当前的Windows登录会话。

我现在面临着如何使用Active Directory,而无需输入密码进行身份验证的一个问题 我敢肯定,必须有某种方式传递某种“令牌”,从客户端,可以用来作为一种替代身份验证方法我们的服务器进程的方式,但我的研究,到目前为止已引起一片空白。

我们的服务器是用C ++写的,所以我们将使用WIN32 API 。 我还打算开发和调试此使用虚拟机运行的是Windows 2008 AD LDS -我希望这将是足以让我想要实现的。

任何帮助或建议,非常感谢。

Answer 1:

你做一个NTLM / Kerberos的/协商SSPI交换循环 。 没有为这两个在MSDN AA全样本客户机和服务器 。 需要明确的是:你使用任何类型的LDAP访问explictily。 是与LDAP会谈,并建立客户身份的LSA(本地安全机构)。 如果你是在做整个SSPI环成功,该认证已成功已经和客户身份对LDAP alread认证。 如果您的服务器需要知道客户身份(例如,知道使用RNAME)从安全上下文导致使用该SSPI循环检索它QueryContextAttributes(..., SECPKG_ATTR_NAMES,...)并从检索用户名该SecPkgContext_Names结构。



文章来源: Authenticating users using Active Directory in Client-Server Application