我正在维护一些遗留的Java LDAP代码.我对LDAP几乎一无所知.
下面的程序基本上只是将用户标识和密码发送到LDAP服务器,如果凭据是好的,则接收通知.如果是,则打印出从LDAP服务器接收的LDAP属性,否则会打印出异常.
如果给出错误的密码,一切都很好.抛出"无效凭证"异常.但是,如果将空密码发送到LDAP服务器,仍将进行身份验证,仍将返回LDAP属性.
由于LDAP服务器允许空白密码,这是不愉快的情况,还是需要调整下面的代码,这样一个空白密码将以这种方式送到LDAP服务器,以免被拒绝?
我确实有数据验证.我在测试环境中将其关闭以解决另一个问题,并注意到了这个问题.我宁愿不在数据验证下面遇到这个问题.
非常感谢您提供任何信息
import javax.naming.*;
import javax.naming.directory.*;
import java.util.*;
import java.sql.*;
public class LDAPTEST {
public static void main(String args[]) {
String lcf = "com.sun.jndi.ldap.LdapCtxFactory";
String ldapurl = "ldaps://ldap-cit.smew.acme.com:636/o=acme.com";
String loginid = "George.Jetson";
String password = "";
DirContext ctx = null;
Hashtable env = new Hashtable();
Attributes attr = null;
Attributes resultsAttrs = null;
SearchResult result = null;
NamingEnumeration results = null;
int iResults = 0;
int iAttributes = 0;
env.put(Context.INITIAL_CONTEXT_FACTORY, lcf);
env.put(Context.PROVIDER_URL, ldapurl);
env.put(Context.SECURITY_PROTOCOL, "ssl"); …Run Code Online (Sandbox Code Playgroud)