Apache gegen mehrere Verzeichnisse authentifizieren

Ich verwalte einen Server der gegen zwei unterschiedliche Verzeichnisse autorisiert, einmal gegen Active Directory und einmal gegen einen lokalen LDAP-Server. Im lokalen LDAP-Server werden Accounts von Projektpartnern angelegt die nicht direkt ins AD sollen.

Dazu wurde bisher gegen Atlassian Crowd authentifiziert, da die Applikationen auf dem Server hauptsächlich von Atlassian sind und ebenfalls gegen Crowd authentifizieren.

Der Server ist nun etwas in die Jahre gekommen und muss dringend erneuert werden. Ein Problem dabei ist, dass der Crowd Connector für Apache seit 2014 End of Life ist, mit Apache 2.4 nicht mehr funktioniert, und mich die von der Community weiterentwickelten Projekte nicht ausreichend überzeugen dass ich sie auf einem wichtigen Produktivserver einsetzen möchte.

Auf meiner Suche nach Alternativen bin ich mehr oder weniger zufällig darüber gestolpert, dass man in der Apache Config Aliase für AuthProvider anlegen kann. Nach einem bisschen herumprobieren war ich dann mit der folgenden Konfiguration erfolgreich:

LDAPConnectionPoolTTL 0

<AuthnProviderAlias ldap ad>
    AuthLDAPBindDN "user@example.com"
    AuthLDAPBindPassword "secret"
    AuthLDAPUrl ldaps://dc.example.com/dc=ad,dc=example,dc=com?sAMAccountName?sub?(&(objectclass=user)(!(objectclass=computer)))
    LDAPReferrals Off
</AuthnProviderAlias>

<AuthnProviderAlias ldap local-ldap>
    AuthLDAPBindDN cn=crowd,dc=server,dc=example,dc=com
    AuthLDAPBindPassword secret
    AuthLDAPURL ldap://server.example.com/dc=server,dc=example,dc=com?mail?sub?(objectclass=inetorgperson)
</AuthnProviderAlias>

<Location "/">
  AuthName "Geschützter Bereich"
  AuthType Basic
  AuthBasicProvider ad local-ldap
  <RequireAny>
    Require valid-user
    Require local
    Require ip 1.2.3.4
  </RequireAny>
</Location>

Hier definiere ich zwei AuthProvider, die ich dann hinterher im Location Block angeben kann. Beim AD ist die Direktive LDAPReferrals Off wichtig, über LDAPConnectionPoolTTL hatte ich bereits gebloggt.

Die Authentifizierung wird an die Atlassian-Applikationen durchgereicht, die direkte Kommunikation mit Crowd ist damit nicht mehr nötig.

Veröffentlicht von

Gerald

Diplom-Informatiker (DH) in Darmstadt. Ich blogge über Entwicklung, Internet, mobile Geräte und Virtualisierung. Meine Beiträge gibt es auch bei Google+ und Facebook.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.