Authentication ldap\u绑定使用错误的凭据返回ldap\u成功
我有个小问题。我想根据LDAP(Windows Active Directory)对用户进行身份验证,一切正常,但组合(良好的用户、良好的密码、错误的域) 在线标记!!!这里!!!'我希望返回0x31或任何其他错误。相反,我获得了成功:(Authentication ldap\u绑定使用错误的凭据返回ldap\u成功,authentication,ldap,Authentication,Ldap,我有个小问题。我想根据LDAP(Windows Active Directory)对用户进行身份验证,一切正常,但组合(良好的用户、良好的密码、错误的域) 在线标记!!!这里!!!'我希望返回0x31或任何其他错误。相反,我获得了成功:( 有什么建议吗?Thx,Milan您是否正在检查ldap_init()、ldap_set_option()和ldap_connect()的返回值 我会尝试使用SEC\u WINNT\u AUTH\u IDENTITY\u EX结构并填写版本和长度 否则,您的代码
有什么建议吗?Thx,Milan您是否正在检查ldap_init()、ldap_set_option()和ldap_connect()的返回值 我会尝试使用
SEC\u WINNT\u AUTH\u IDENTITY\u EX
结构并填写版本和长度
否则,您的代码在我看来是正确的
它也可能会退回到匿名访问,或以您的登录用户身份访问
Windows在匹配域和用户名字符串方面非常“有帮助”。你给域传递了什么?它是一个看似合理但不存在的域字符串吗?如果它违反了命名规则,它可以被忽略,用户可以像你没有指定用户名一样匹配。特别是像“管理员”这样的知名用户名最终只匹配任何本地计算机或域
您是否尝试过使用绑定连接进行简单查询
有一种奇怪的情况,即使用最近过期的密码绑定会成功,但随后会导致同一连接上的后续绑定的某些操作任意失败。不过,我不认为这是您看到的情况。如果您遇到这种奇怪的情况,我想解决方案就隐藏在这里的某个地方:绑定成功be因为在ldap_init调用期间,这对用户名/密码对所连接的域有效。在这种情况下,凭证中提供的域将被忽略 若要确认此状态,您可以尝试使用此服务器的受信任域中的某些凭据。由于用户在您连接的域中不存在,因此提供无效的域名将导致绑定失败,并且凭据无效
希望这能有所帮助。嗨,我将尝试该结构的“EX”版本。关于返回值,我一定会检查它们。这只是一个简短的测试用例。总之,thx,rezna
LDAP* ldap = ldap_init(L"myserver", 389);
ULONG ldap_version = 3;
ULONG ret = LDAP_SUCCESS;
ret = ldap_set_option(ldap, LDAP_OPT_PROTOCOL_VERSION, (void*)&ldap_version);
ret = ldap_connect(ldap, NULL);
SEC_WINNT_AUTH_IDENTITY ai;
ai.Domain = (unsigned short*)BAD_DOMAIN;
ai.DomainLength = wcslen(BAD_DOMAIN);
ai.User = (unsigned short*)OK_USER;
ai.UserLength = wcslen(OK_USER);
ai.Password = (unsigned short*)OK_PASS;
ai.PasswordLength = wcslen(OK_PASS);
ai.Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE;
ret = ldap_bind_s(ldap, NULL, (PWCHAR) &ai, LDAP_AUTH_NTLM); // !!! HERE !!!
ret = ldap_unbind_s(ldap);