You are not logged in.

  • Login

1

Monday, December 18th 2006, 4:35pm

Benutzer-Authentifizierung über LDAP

Servus

Hat jemand Ahnung wie man mittels LDAP herausfinden kann, ob sich ein Benutzer ordnungsgemäß am System angemeldet hat?
Hab mich schon ein wenig im Inet schlau gemacht, aber so ganz funktioniert es noch nicht.

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
private void ldap(){
	Hashtable props = new Hashtable();
 
	props.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
	props.put(Context.SECURITY_AUTHENTICATION, "simple");
	// Benutzername
	props.put(Context.SECURITY_PRINCIPAL, "domain\ldap.user");
	// Passwort
	props.put(Context.SECURITY_CREDENTIALS, "password");
	// Der Server
	props.put(Context.PROVIDER_URL, "ldap://127.0.0.1:389");
 
	try {
		System.out.println("InitialDirContext start");
		InitialDirContext ctx = new InitialDirContext(props);
		System.out.println("InitialDirContext stop");
 
		System.out.println("NamingEnumeration start");
		NamingEnumeration ne = ctx.search("ldap://127.0.0.1:389/cn=users, dc=domain, dc=de"
					, "samaccountname=horschi", null);
		System.out.println("NamingEnumeration stop");
 
		SearchResult match = (SearchResult)ne.nextElement();
		ctx = null;
 
		System.out.println(match.getName());
 
	} catch (NamingException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}


Hoffe es findet sich jemand, der mir da weiterhelfen kann, bzw. sagen kann ich welcher Lektüre ich sowas finde

Greetings

2

Monday, December 18th 2006, 5:10pm

hi,

naja, welche ressourcen hast du denn durchsucht.
Erste Anlaufstelle ist natürlich java.sun.com

Dort habe ich folgenden Code gefunden:
http://java.sun.com/products/jndi/tutorial/ldap/security/ldap.html#SIMPLE

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Set up the environment for creating the initial context
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, 
    "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");
 
// Authenticate as S. User and password "mysecret"
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=S. User, ou=NewHires, o=JNDITutorial");
env.put(Context.SECURITY_CREDENTIALS, "mysecret");
 
// Create the initial context
DirContext ctx = new InitialDirContext(env);
 
// ... do something useful with ctx

sieht deinem Code recht ähnlich...

Alternativ gibts noch das openLDAP Projekt (super dokumentiert)
* http://www.openldap.org/jldap/overview.html
* http://developer.novell.com/.../jldap_sample/VerifyPassword.java.html

Hast du den Zugriff auf die Logfiles vom Server?
Irgendwelche Meldungen?

3

Tuesday, December 19th 2006, 2:40pm

Habs mitlerweile raus.
Dein Post hat mich leider nicht wirklich weiter gebracht (wie man ja gesehen hat, war ich eigentlich genau so weit wie in deinem Beispiel).
Bei uns in der Firma ist der Verzeichnisbaum etwas "verwirrend" aufgebaut, aber was will man machen. Daher hatte ich anfangs auch einige Probleme vom Verständins her, wie ich mich Anmelden kann usw.

Falls es wen interessiert:
1. Sich mit einem speziellen Benutzer anmelden, mit dem man suchen kann.
2. suche nach dem Loginnamen (bei uns in der Firme wäre das z.B. m.mustermann) und sich den Namen des Knoten geben lassen (Sollte mit CN anfangen, in unserem Beispiel "CN=Mustermanm\, Max"
3. sich neu versuchen am Server anzumelden, diesesmal mit "CN=Mustermann\, Max, ou=users, dc=domain, dc=de" oder sowas in der Art
(4.) noch irgendeinen sinnlosen Zugriff auf den Baum, damit man sieht dass der user auch wirklich angemeldet ist

Falls jemand noch etwas Code brauche ...

Mit freundlichen Grüßen
cr4ch

Similar threads

Social bookmarks