Springboot und LDAP - Authentifizieren gegen Gruppe

brunataner

Neues Mitglied
Hallo,
ich hoffe ihr könnt mir weiterhelfen.
Hier vor Ort haben wir ein AD in diesem gibt es eine Gruppe die nennt sich Monteure.
In der Gruppe gibt es viele Member Attribute und gegen diese muss ich prüfen.

Ziel ist es zu ermitteln ob es den User XY in der Gruppe gibt und falls ja Username und Password zu vergleichen.

Ich versuche das einmal vernüftig darzustellen:
LDAP-Struktur:
  • DC=Firma, DC=local
    • OU=Users
      • CN=Monteure
Struktur der Gruppe Monteure:
  • objectClass = group(strukturell)
  • groupType = top(abstrakt)
  • instanceType = 4
  • objectCategory = CN=Group,CN=Schema,CN=Configuration,DC=Firma,DC=local
  • cn = Monteure
  • member = CN=Mustermann Max,OU=IT,OU=Stadt,OU=User,DC=Firma,DC=local
  • member = CN=Musterfrau Maxim,OU=IT,OU=Stadt,OU=User,DC=Firma,DC=local
  • name = Monteure
  • sAMAccountName = Monteure
Mir ist nun nicht klar wie ich von dem Attribut Member der Gruppe Monteure zu den Attributen des Members komme, um mir da den Usernamen und das Password zu holen.

Mit einfachen OUs und dann den einzelnen untergeordneten Usern als CN klappt das aber bei Attributen einer Gruppe weis ich nicht nicht weiter...

Vllt. mag mir ja einer helfen.

Grüße aus dem Norden!
 

httpdigest

Top Contributor
Was du möchtest ist, dich per LDAP Protokoll gegen das ActiveDirectory zu authentisieren.
Das erreicht man nicht, indem man sich Username und Passwort ausliest und vergleicht (hint: Das Passwort bekommst du sowieso nicht per LDAP Protokoll aus dem AD heraus), sondern was du willst, nennt sich LDAP "Bind" Operation. Lese dir vielleicht mal ein paar Artikel zu Spring boot mit LDAP durch. Vielleicht willst du auch noch Spring Security und LDAP.
 

brunataner

Neues Mitglied
Ich habe mir schon mehrere Sachen durchgelesen, z.B. StackOverflow oder guides von spring.io.
Ich steige da nur nicht so ganz durch... ich muss dazu sagen das ich mich erst seit knapp 3 Wochen mit Java und allgemein OOP beschäftige und auch von Spring noch keine Ahnung habe(kenne bisher nur prozedurale Programmierung) und ich soll mich jetzt nach und nach mit praktischen Projektaufgaben daran tasten.

Mein Ausbilder hat mir folgenden spring.io Guide gegeben https://spring.io/guides/gs/authenticating-ldap/
Anweisung ist dies Nachzubauen und dann auf unser LDAP umzukonfigurieren. Das Nachbauen hat auch geklappt und ich konnte mich gegen die Test.ldif Datei authentifizieren.
Nur weis ich nicht nicht wie ich das jetzt auf auf eine Gruppe übertragen kann...da unser LDAP anders aufgebaut ist als die Test.ldif.
In der Test.ldif wird nur gegen ein User getestet der die Attribute uid und password hat, diese werden dann geprüft(verschlüsselt wie auch klartext). Soweit verstehe ich das alles auch.
Aber wie kann ich sauber die Member der Gruppe prüfen?

Meine bisherige Idee war das ich mir den Pfad ziehe(also den Member) und dann anhand dessen dann die Credentials checken lassen, ein weiteres Problem ist nur das es bei uns im Ldap wohl kein Attribute Password gibt und ich nun dazu auch nicht weis wo ich das herbekomme...

Kannst du mir nicht bitte einfach einen Hinweis geben damit ich weiterkomme, sonst halte ich die Entwicklung der Middleware nur auf und bekomme vermutlich noch Ärger weil es zu langsam voran geht....
 

JuKu

Top Contributor
Ich saß auch schon öfters vor dem Problem (und habe sehr viel Zeit da rein investiert, bis es lief), aber es ist eig. ziemlich einfach. Da Code mehr sagt als 1000 Worte, hier mal ein Code Beispiel, wie du die Gruppen ausliest (unabhängig von Spring, Methode listGroups() ist für dich relevant):
https://github.com/JuKu/mmo-proxy-2...kusoft/mmo/proxy/frontend/ldap/LDAPLogin.java

EDIT:
Der Code ist nicht besonders toll, da es sich hierbei um einen Prototyp handelte. Aber das Prinzip solltest du wohl trotzdem verstehen können.

Spring hat auch noch einen vereinfachten LDAP Authentificator, der in deinem Link oben auch etwas beschrieben wird:
Java:
@Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth
            .ldapAuthentication()
                .userDnPatterns("uid={0},ou=people")
                .groupSearchBase("ou=groups")
                .contextSource()
                    .url("ldap://localhost:8389/dc=springframework,dc=org")
                    .and()
                .passwordCompare()
                    .passwordEncoder(new LdapShaPasswordEncoder())
                    .passwordAttribute("userPassword");
    }
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
ExceptionOfExpectation Persistierung in Hibernate(SpringBoot) Frameworks - Spring, Play, Blade, Vaadin & Co 2
ExceptionOfExpectation Desktop-Window in SpringBoot Frameworks - Spring, Play, Blade, Vaadin & Co 12
S java springboot HTML Produktstruktur Frameworks - Spring, Play, Blade, Vaadin & Co 1
G Java springboot Item mit ItemInstance verbinden Frameworks - Spring, Play, Blade, Vaadin & Co 2
ExceptionOfExpectation @Value() für application.properties [SpringBoot] Frameworks - Spring, Play, Blade, Vaadin & Co 9
Zrebna SpringBoot: Einfache RestAPI konsumieren gelingt nicht. Frameworks - Spring, Play, Blade, Vaadin & Co 6
Zrebna SpringBoot-Project: java.sql.SQLSyntaxErrorException: Access denied for user 'gap3'@'%' to database '3306/gap3' Frameworks - Spring, Play, Blade, Vaadin & Co 3
D SpringBoot Properties und Docker Frameworks - Spring, Play, Blade, Vaadin & Co 8
Dimax SpringBoot native Querry return ArrayList Frameworks - Spring, Play, Blade, Vaadin & Co 6
OnDemand SpringBoot Logrotation funktioniert nicht Frameworks - Spring, Play, Blade, Vaadin & Co 6
Robertop Springboot Server kann Jakarta Persistence Root nicht installieren? Frameworks - Spring, Play, Blade, Vaadin & Co 0
G SpringBoot MVC Frameworks - Spring, Play, Blade, Vaadin & Co 1
tom.j85 SpringBoot Rest-Application funktioniert nicht - Keine Fehlermeldungen Frameworks - Spring, Play, Blade, Vaadin & Co 13
V SpringBoot/Thymeleaf ein Attribut zum Controller schicken Frameworks - Spring, Play, Blade, Vaadin & Co 10
L OpenJFX, SpringBoot und Gradle Frameworks - Spring, Play, Blade, Vaadin & Co 12
L SpringBoot Web Application Frameworks - Spring, Play, Blade, Vaadin & Co 1
S SpringBoot MySQL not run Frameworks - Spring, Play, Blade, Vaadin & Co 5
R Authentifizieren mit SpringBoot Frameworks - Spring, Play, Blade, Vaadin & Co 4
M Günstigste oder kostenlose Variante SpringBoot Application laufen zu lassen Frameworks - Spring, Play, Blade, Vaadin & Co 7
Z Springboot - Hauptklasse nicht gefunden Frameworks - Spring, Play, Blade, Vaadin & Co 5
A SpringCloud | SpringBoot | Eureka Frameworks - Spring, Play, Blade, Vaadin & Co 0
K Laden einer Datei vom Netzlaufwerk mit LDAP-Authentifizierung Frameworks - Spring, Play, Blade, Vaadin & Co 3
R Spring Security: Wie den User dynamisch authentifizieren? Frameworks - Spring, Play, Blade, Vaadin & Co 8

Ähnliche Java Themen

Neue Themen


Oben