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.

Timeouts mit Apache/Windows/LDAP/Active Directory

Ich hatte eine ganze Zeit lang versucht ein Timeout-Problem bei einem Apache-Server zu analysieren. Das Muster sah folgendermaßen aus:

Bei jedem ersten Zugriff auf den Server fragte der Server sofort nach Benutzernamen und Passwort, danach wartete der Server exakt eine Minute bevor er die Antwort sendete.

Timeouts mit Apache/Windows/LDAP/Active Directory weiterlesen

Tastaturlayout mit Strg+Umschalt wechseln

Seit Jahren ärgere ich mich darüber dass man nicht nur mit Windows+Leertaste zwischen mehreren Tastaturlayouts umschalten kann, sondern zusätzlich auch noch mit Ctrl+Shift. Diese Tastenkombination erwische ich einfach viel zu oft aus versehen beim Programmieren.

Das einzige, was die Umstellung signalisiert, ist eine kurze Einblendung am rechten Bildschirmrand, die aber nur so lange da ist wie man die Tasten auch gedrückt hat. Beim schnellen Tippen registriert man das unter Umständen gar nicht und wundert sich dann wieso auf einmal $ nicht mehr da ist wo es hingehört.

Tastaturlayout mit Strg+Umschalt wechseln weiterlesen

Windows Editor speichert Umlaute fehlerhaft

Nachdem ich unser billiges China-Tablet mit Windows 10 neu aufgesetzt hatte tauchte dort ein kurioses Phänomen auf. Wenn man im normalen Editor von Windows Umlaute tippte, und die Datei mit der Standard-Codierung ANSI speicherte, bekam man die folgende Fehlermeldung:

Diese Datei enthält Zeichen im Unicode-Format, die verloren gehen, wenn die Datei im ANSI-Textformat gespeichert wird.
Windows Editor speichert Umlaute fehlerhaft weiterlesen