Ala*_*lan 11 c++ authentication winapi ldap active-directory
我被要求在现有客户端服务器应用程序中针对Active Directory对用户进行身份验证提供支持.
此时,用户从客户端计算机提供用户名和密码,通过线路(加密)传递到我们的服务器进程,并与存储在数据库中的用户名/密码进行匹配.
最初,我认为这将是一个容易解决的问题,因为我可以简单地从我们的服务器进程中针对Active Directory验证用户的名称/密码.但事实证明,用户不必从我们的客户端应用程序输入密码,而是从当前的Windows登录会话中获取其凭据.
我现在面临的问题是如何在没有密码的情况下使用Active Directory进行身份验证? 我确信必须有一种方法可以某种方式将某种"令牌"从客户端传递到我们的服务器进程,这可以用作另一种身份验证方法,但到目前为止我的研究已经画了一个空白.
我们的服务器是用C++编写的,所以我们将使用win32 API.我还打算使用运行Windows 2008 AD LDS的虚拟机来开发和调试它- 我希望这对我想要实现的目标是足够的.
非常感谢任何帮助或建议.
Rem*_*anu 11
您执行NTLM/Kerberos/Negotiate SSPI交换循环.MSDN上有一个客户端和服务器的完整示例.需要明确的是:您没有明确使用任何类型的LDAP访问.LSA(本地安全机构)是否与LDAP通信并建立客户端的身份.如果你是在做整个SSPI环成功,该认证已成功已经和客户身份alread对LDAP身份验证.如果您的服务器需要知道客户端身份(例如,知道使用rname),它将从安全上下文中检索它,从而使用SSPI循环QueryContextAttributes(..., SECPKG_ATTR_NAMES,...)并从SecPkgContext_Names结构中检索用户名.
| 归档时间: |
|
| 查看次数: |
8116 次 |
| 最近记录: |