Webbasierte Anwendung - Authentifizierung über LDAP/ActiveDirectory

Diskutiere Webbasierte Anwendung - Authentifizierung über LDAP/ActiveDirectory im Netzwerkprogrammierung Forum; Hallo zusammen, ich schreibe meine Bachelorarbeit in einem Unternehmen und programmiere eine web-basierte Anwendung mit Java EE. Im Grunde ist...

  1. lifeisbeautiful
    lifeisbeautiful Mitglied
    Hallo zusammen,

    ich schreibe meine Bachelorarbeit in einem Unternehmen und programmiere eine web-basierte Anwendung mit Java EE. Im Grunde ist die Anwendung auch so gut wie fertig. Jedoch fehlt mir noch eine letzte Funktionalität: Die Authentifizierung. Das soll über LDAP/Active Directory umgesetzt werden. Die Programmierung der Anwendung verlief ganz gut. Nur habe ich sehr große Wissens-Lücken bzgl. LDAP und Active Directory.

    Im Active Directory hat mein Betreuer eine Gruppe angelegt. In dieser Gruppe sind alle Nutzer eingetragen, die in Zukunft Zugriff auf diese web-basierte Anwendung haben. Mein Vorhaben ist der Folgende:

    Ich muss durch LDAP im Active Directory überprüfen, ob der Nutzer, der einen Login durchführen möchte, sich in dieser Gruppe befindet. Wenn ja, ist der Login erfolgreich, wenn nicht, dann hat er keinen Zugriff.

    Dementsprechend muss auch überprüft werden, ob das eingegebene Passwort korrekt ist.

    Ich habe einen Usernamen und Passwort, womit ich mich erst einmal in den LDAP-Server anmelden kann. Diese Anmeldeinformationen haben erst einmal nichts mit dem Login zu tun. Das ist nur für den Zugriff auf den LDAP-Server.

    Das Prinzip ist mir zwar klar, aber ich um ehrlich zu sein nicht den blassen Schimmer, wie ich das angehen soll? Ich habe zuvor noch nie mit LDAP und Active Directory etwas zu tun gehabt. ich habe bisher lediglich nur Anwendungen geschrieben.

    Nun weiß ich einfach nicht, wie das umgesetzt werden soll. Wie muss ich denn die Suche in LDAP umsetzen? Wie suche ich denn durch LDAP im Active Directory nach Usern bzw. Gruppen? Was muss ich beachten? Habt ihr eventuell Code-Beispiele für mich? Oder ein Buch, das mein Vorhaben einigermaßen gut beschreibt?

    Ich freue mich über jeden kleinen Tipp.

    Freundliche Grüße
     
  2. Vielleicht hilft dir dieses Training hier weiter.
  3. mihe7
    mihe7 Bekanntes Mitglied
  4. fhoffmann
    fhoffmann Aktives Mitglied
  5. JuKu
    JuKu Aktives Mitglied
    LDAP ist in der Tat nicht das einfachste Thema.
    Prinzipiell ist ein LDAP auch eine Art Ordner-Struktur (mal stark vereinfacht gesprochen), wobei jeder Ordner meist mit einem "cn=" anfängt. Und jetzt gibt es 2 Möglichkeiten:
    Entweder du kennst den Ordner nicht und durchsucht quasi sämtliche Verzeichnisse nach dem User ab (ziemlich unpraktikabel und wird auch eig. fast nie gemacht) oder du kennst bereits den Ordner und suchst in dem Ordner nach dem User.

    Prinzipiell ist das Vorgehen also wie folgt:
    1. Anmelden beim LDAP Server (mit den Zugangsdaten des Nutzers --> dadurch weißt du schon, dass die Authentifizierungsdaten wie Username & Passwort stimmen) und
    2. prüfen der Berechtigungen (also ob der Nutzer Mitglied in der Gruppe ist).

    Hier mal ein älteres (und nicht ideales) Code-Beispiel für den Login, allerdings habe ich das nur zum Testen schnell zusammen gebaut:
    https://github.com/JuKu/mmo-proxy-s...usoft/mmo/proxy/database/login/LDAPLogin.java
     
  6. JuKu
    JuKu Aktives Mitglied
    Oder noch ein besseres Code-Beispiel aus einem Open Source Projekt, bei dem ich selbst mitarbeite:
    Code (Java):

    try (LdapConnection conn = new LdapNetworkConnection(host, port)) {
                    //set timeout
                    ((LdapNetworkConnection) conn).getConfig().setTimeout(TIMEOUT_LIMIT_SECONDS * 1000L);

                    //login to ldap server
                    conn.bind("uid=" + username + ",cn=users,cn=accounts,dc=example,dc=com", password);

                    SearchRequest req = new SearchRequestImpl();
                    req.setTimeLimit(TIMEOUT_LIMIT_SECONDS);
                    req.setScope(SearchScope.SUBTREE);
                    req.addAttributes("memberOf");
                    req.setBase(new Dn("cn=users,cn=accounts,dc=example,dc=com"));
                    req.setFilter("(&(uid=" + username + ")(memberOf=cn=" + groupName + ",cn=privileges,dc=example,dc=com))");

                    SearchCursor cursor = conn.search(req);

                    if (cursor.next()) {
                        //
                    } else {
                        group = -1;//user is not in group
                        throw new BadCredentialsException("You don't have access to use this software!");
                    }
                    req.abandon();

                    conn.unBind();
                } catch (InvalidConnectionException e) {
                    throw new BadCredentialsException("LDAP server is down. Please try again later.");
                } catch (IOException e) {
                    e.printStackTrace();
                    throw new BadCredentialsException(ERROR_WHILE_AUTHENTIFICATING);
                } catch (LdapAuthenticationException ex) {
                    throw new BadCredentialsException("Your credentials were not accepted!");
                }


            } catch (LdapException | CursorException e) {
                e.printStackTrace();
                throw new BadCredentialsException(ERROR_WHILE_AUTHENTIFICATING);
            }
     
    mihe7 gefällt das.
  7. JuKu
    JuKu Aktives Mitglied
  8. Wenn du Java lernen möchtest, empfehlen wir dir dieses Online-Training hier
Passende Stellenanzeigen aus deiner Region:





Die Seite wird geladen...

Webbasierte Anwendung - Authentifizierung über LDAP/ActiveDirectory - Ähnliche Themen

Struts2 in webbasierter Anwendung
Struts2 in webbasierter Anwendung im Forum Web Tier
Problem mit webbasierter Anwendung
Problem mit webbasierter Anwendung im Forum Allgemeine Java-Themen
exe Anwendung CPU-/Speicherverbauch
exe Anwendung CPU-/Speicherverbauch im Forum Allgemeine Java-Themen
UML Anwendungsfalldiagramme
UML Anwendungsfalldiagramme im Forum Java Basics - Anfänger-Themen
JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus
JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus im Forum AWT, Swing, JavaFX & SWT
Thema: Webbasierte Anwendung - Authentifizierung über LDAP/ActiveDirectory

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. authentifizierung über ldap

    ,
  2. authentifizierung über ldap php