在我的组织中有CORP网络,我们有LDAP服务器,我可以通过java程序非常容易地连接该服务器,证明用户名(主要)&密码。下面是我连接到org LDAP服务器的java代码。
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://corp.testorg.com:10389");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "CORP\\username");
env.put(Context.SECURITY_CREDENTIALS, "password");
try
{
DirContext ctx = new InitialDirContext(env);
System.out.println("connected");
}
但我的问题是,我已经通过本地计算机上的apache DS创建了自己的LDAP服务器,然后尝试通过相同的程序连接到本地LDAP服务器,然后我必须提供基本dn,如下所示< / p>
put(Context.SECURITY_PRINCIPAL, "cn=username,ou=users,o=test")
为什么我必须使用用户名提供base dn我不理解。我错过了LDAP服务器上的一些配置,请告诉我。
答案 0 :(得分:0)
SECURITY_PRINCIPAL支持的格式在很大程度上取决于服务提供商。通常,期望用户的可分辨名称,但Active Directory supports a couple of additional formats。