Hi,
Es gibt da so ein tolles Package von Novell (jLDAP) über das ich bei Google öfters gestolpert bin. Nun habe ich mir dieses Paket genommen und kann damit auch erfolgreiche Auth an ein Novell eDirectory machen, scheitete aber am einem MS ADS. ich habe im Quellcode die Schritte kommentiert bis zu dem Punkt wo die Exception geworfen wird
Die Fehlermeldung lautet :
Error: LDAPReferralException: Search result reference received, and referral following is off (10) Referral
LDAPReferralException: Referral: ldap://DomainDnsZones.de.corp/DC=DomainDnsZones,DC=de,DC=corp
hier der entsprechende Teilcode (der erste Bind mit einem "queryuser" funktioniert):
Es gibt da so ein tolles Package von Novell (jLDAP) über das ich bei Google öfters gestolpert bin. Nun habe ich mir dieses Paket genommen und kann damit auch erfolgreiche Auth an ein Novell eDirectory machen, scheitete aber am einem MS ADS. ich habe im Quellcode die Schritte kommentiert bis zu dem Punkt wo die Exception geworfen wird
Die Fehlermeldung lautet :
Error: LDAPReferralException: Search result reference received, and referral following is off (10) Referral
LDAPReferralException: Referral: ldap://DomainDnsZones.de.corp/DC=DomainDnsZones,DC=de,DC=corp
hier der entsprechende Teilcode (der erste Bind mit einem "queryuser" funktioniert):
Code:
public String auth(String user, String pass) throws J2InternalException{
String filter=searchFilter.replaceAll("__user__",user);
LDAPConnection lc = new LDAPConnection();
try {
lc.connect( ldapHost, ldapPort );
} catch (LDAPException e) {
Exceptions.throwInternalException(e,"Error connecting to Ldap server");
}
// bind to the server
try {
lc.bind( ldapVersion, loginDN, password.getBytes("UTF8") ); //Der Bind funktioniert und ich bin verbunden
} catch (Exception e) {
Exceptions.throwInternalException(e,"Failed to login for search");
}
LDAPSearchResults searchResults = null;
try {
searchResults = lc.search( searchBase,
searchScope,
filter,
new String[] {}, // return all attributes
true);
} catch (LDAPException e1) {
Exceptions.throwInternalException(e1,"Failed to search");
}
System.out.println(searchResults.getCount()); //Hier kommt 1 zurück, also ein Treffer
while ( searchResults.hasMore()) {
LDAPEntry nextEntry = null;
try {
nextEntry = searchResults.next(); //und hier wird die Exception ausgelöst, alles danach wird nicht mehr bearbeitet.
}
catch(LDAPException e) {
System.out.println("Error: " + e.toString());
// Exception is thrown, go for next entry
if(e.getResultCode() == LDAPException.LDAP_TIMEOUT || e.getResultCode() == LDAPException.CONNECT_ERROR) {
System.out.println("y1");
break;
}else {
System.out.println("y2");
continue;
}
}
System.out.println("Entry:"+nextEntry.getDN());
try {
lc.bind( ldapVersion, nextEntry.getDN(), pass.getBytes("UTF8") );
} catch (UnsupportedEncodingException e) {
Exceptions.throwInternalException(e);
} catch (LDAPException e) {
return null;
}
if(lc.isBound()){
return nextEntry.getDN();
}
}
try {
lc.disconnect();
} catch (LDAPException e) {
Exceptions.throwInternalException(e,"Failed to disconnect");
}
return null;
}