devcode
Goto Top

LDAP Authentifizierung in einer .htaccess auf Apache2

Hey Leute,

habe folgendes Problem:

Bin momentan an meiner Vorbereitung für die mündliche Prüfung und mein Projekt enthält zum Teil eine LDAP Anbindung.
Ich hätte diese gerne über eine .htaccess Datei umgesetzt, da es dabei nur um eine geschützte Website geht.

Ich benutze einen Raspberry Pi 3 B+ mit Raspbian Stretch (aktuell)

Apache 2.4.25

module ldap und authnz_ldap sind aktiv.

Mein bisheriger Code war so:
AuthType Basic
AuthName "Zugangsberechtigung"  
AuthBasicProvider ldap
LDAPReferrals Off
AuthLDAPBindDN "CN=xxx,OU=xxx,OU=xxx,OU=xxx,DC=mycompany,DC=de"  
AuthLDAPBindPassword xxxx
AuthLDAPURL ldap://xxx.de:x/OU=xxx,OU=xxx,DC=mycompany,DC=de
Require ldap-group "CN=Grp.xxx,OU=xxx,OU=xxx,OU=xxx,DC=mycompany,DC=de"  
die .htaccess liegt momentan im Verzeichnis: /var/www/html/
"AllowOverride All" gilt für: /var/www/


Aktueller Status:

Bei dem Aufruf im Browser meines Apache2 Servers erhalte ich eine Benutzer und Kennwort Abfrage.
Nach Eingabe der Daten eines Domänen-Benutzers in der spezifizierten Gruppe lädt es nur noch und endet irgendwann in: "Internal Server Error"

Könnt Ihr irgendwelche Fehler erkennen?

Danke im Voraus!

Content-ID: 454414

Url: https://administrator.de/forum/ldap-authentifizierung-in-einer-htaccess-auf-apache2-454414.html

Ausgedruckt am: 22.12.2024 um 11:12 Uhr

SlainteMhath
SlainteMhath 22.05.2019 um 14:47:04 Uhr
Goto Top
Moin,

und endet irgendwann in: "Internal Server Error"
Dann wirf dich mal einen Blick in dein error.log - da sollte i.d.R. stehen was dem Apachen nicht passt.

lg,
Slainte
DevCode
DevCode 22.05.2019 um 14:51:47 Uhr
Goto Top
Hi Slainte,

das habe ich bereits. Du meinst hoffentlich denselben Error Log wie ich?

/var/log/apache2/error.log

Dieser sagt leider überhaupt nichts dazu.
Habe davor die Module ldap und authnz_ldap nicht aktiviert gehabt, was auch im Error Log beschrieben war.
Leider seit dieser Fehlerbehebung nichts mehr aufgetaucht im Log.

Danke für die schnelle Antwort

lg
Patrick
Dani
Dani 22.05.2019 aktualisiert um 15:36:40 Uhr
Goto Top
Moin,
da du nicht schreibst, welche Apache2 Version du im Einsatz hast, hier eine Übersicht der verschiedenen Konfigurationen.Dazu noch eine Referenz bezüglich der Nutzung von Microsoft AD DS.


Gruß,
Dani
DevCode
DevCode 22.05.2019 um 16:08:20 Uhr
Goto Top
Servus Dani,

hier noch einmal für dich:

Server version: Apache/2.4.25 (Raspbian)
Server built: 2019-04-02T19:05:13

Leider waren diese beiden Links nicht sehr hilfreich..
Habe den ersten Beitrag schon gelesen und getestet.

Bei deinem ersten Link, willst du die LDAP Abfrage schon in der Config-Datei festlegen, was ich gar nicht dumm finde.
Eine Config für evtl mehrere Hosts. TOP! [Meine Konfiguration, war bloß eine .htaccess, die durch die ldap-auth.conf ersetzt werden kann]
Leider hat auch die Anpassung des Musterbeispiels dieser Seite nichts geholfen.

Bei deinem zweiten Link verstehe ich nicht genau was du meinst..

Verstehe ich das richtig, dass man mit LDAPBind einen blanken User mit einem Kennwort übergibt, der keine besonderen Rechte hat?
juhu01
juhu01 22.05.2019 um 16:35:47 Uhr
Goto Top
servus

mit dem ldap bind gibst du den server, den user und den zweig an, den du abfragen mochtest.
teste die ldap-verbindung von der shell aus. wenn das error.log des apachen nichts ausgibt, dürfte der fehler eher im bind liegen, bzw im connect liegen.
Dani
Dani 22.05.2019 um 17:40:07 Uhr
Goto Top
Moin,
Leider hat auch die Anpassung des Musterbeispiels dieser Seite nichts geholfen.
Wie sieht den aktuell das angepasste Muster für dein Szenario aus?

Verstehe ich das richtig, dass man mit LDAPBind einen blanken User mit einem Kennwort übergibt, der keine besonderen Rechte hat?
Eigentlich reicht das aus. Denn jeder Benutzer darf im LDAP lesen.

Bei deinem zweiten Link verstehe ich nicht genau was du meinst..
Bis dato hast du von LDAP gesprochen, aber nicht auf welcher Basis. LDAP ist schließlich "nur" das Protokoll. Der zweite Link ist eine Implementierung unter Verwendung von AD DS.


Gruß,
Dani
DevCode
DevCode 23.05.2019 um 08:36:38 Uhr
Goto Top
Hallo Dani,

sry hab den ersten Fehler schon gefunden.. Ich war bis heute leider mit meinem Raspi als Test in einem abgeschirmtem Netz, wo ich keinen Zugriff auf den Domain Controller usw. hatte. Mein Fehler.

AuthName "AD/LDAP Authentifikations Test"  
AuthBasicProvider ldap
AuthType Basic
LDAPReferrals Off
AuthLDAPGroupAttribute member
AuthLDAPGroupAttributeIsDN On
AuthLDAPURL "ldap://xx.mycompany.de:3268/DC=mycompany,DC=de?sAMAccountName?sub?(objectClass=*)"  
AuthLDAPBindDN "xxx@mycompany.de"  
AuthLDAPBindPassword xxx
Require ldap-group "CN=xxx,OU=xxx,OU=xxx,OU=xxx,DC=mycompany,DC=de"  

Diese Datei "ldap-auth.conf" liegt in /etc/apache2/conf-available/

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<Directory "/var/www/html">  
        AllowOverride None
        Include /etc/apache2/conf-available/ldap-auth.conf
</Directory>

Diese Datei "000-default.conf" liegt in /etc/apache2/sites-available/


Aktueller Status:

- [Thu May 23 08:29:43.172512 2019] [auth_basic:error] [pid 6706] [client x.x.x.x:38424] AH01617: user Test: authentication failure for "/": Password Mismatch
- Zumindest erreicht die Abfrage jetzt den DC. Der User "Test" ist der User mit dem ich die Gruppenabfrage mache.
Dani
Lösung Dani 23.05.2019 aktualisiert um 11:40:50 Uhr
Goto Top
Moin,
mache es doch am Anfang nicht so schwierig. Ersetze Zeile 10 in der ldap-auth.conf mit Require valid-user. Somit kann sich erstmal jeder Benutzer authentifizieren. Wenn das funktioniert, kannst du die Gruppe aufgreifen. Ansonsten lass mal die Anführungszeichen am Anfang bzw. Ende noch weg.

Die Direktive wie OU, CN, DC immer alles klein schreiben. Ich weiß nicht, ob es einen Unterschied macht, aber sicher ist sicher. face-wink

- Zumindest erreicht die Abfrage jetzt den DC. Der User "Test" ist der User mit dem ich die Gruppenabfrage mache.
Woher weist du das? Hast du den entsprechenden Eintrag im Event Log des DCs gesehen?


Gruß,
Dani
DevCode
DevCode 23.05.2019 um 15:47:30 Uhr
Goto Top
Hallo Leute,

erstmal vielen Danke für Eure Hilfe!
Habe den "Dreck" jetzt zum laufen gebracht.

Wen es interessiert:

AuthName "Benutzerauthentifizierung"  
AuthBasicProvider ldap
AuthType Basic
LDAPReferrals Off
AuthLDAPGroupAttribute member
AuthLDAPGroupAttributeIsDN On
AuthLDAPURL "ldap://mycompany.de:389/DC=mycompany,DC=de?sAMAccountName?sub?(objectClass=*)"  
AuthLDAPBindDN "user@mycompany.de"  
AuthLDAPBindPassword xxxx
Require ldap-group CN=xx,OU=xx,OU=xx,OU=xx,DC=mycompany,DC=de

Aufpassen: Bei require ldap-group darf man keine Anführungszeichen setzen.

Vielen Dank an Dani für deine Geduld

mfg Patrick
Dani
Dani 23.05.2019 um 15:56:31 Uhr
Goto Top
Moin,
Aufpassen: Bei require ldap-group darf man keine Anführungszeichen setzen.
sag ich doch. face-wink

Habe den "Dreck" jetzt zum laufen gebracht.
Warum macht man auch sowas... face-smile Integriete Authenifizierungseiten sind doch viel schöner als so ein Dialogfenster und damit kann man auch SAML oder oAuth für die Authentifizierung nutzen.


Gruß,
Dani