Nutze crowd mit einem LDAP Klienten

Posted by

Ich musste den Atlassian Crowd via LDAP Interface ansprechen können. Derzeit ist es nicht mit Bordmitteln möglich da Atlassian das Interface nicht anbietet. Da heutzutage viele Software-Produkte eine LDAP Anbindung haben musste ich mir was einfallen lassen um diese Herausforderung zu lösen.

Crowd bietet derzeit nur CrwodID an um sich von außen zu authentifizieren. Diese Lösung basiert auf der obsoleten OpenID 2.0 Spezifikation. Ich kontakierte natürlich den Hersteller Atlassian und frage nach ob es einen Plan gibt die neuere OpenID Connect Spezifikation zu implementieren. Wie üblich bei so grossen firmen hieß es „im prinzip ja“ aber wann was das feature kommt kann man nicht sagen.

Nun da ich das LDAP Interface brauchte suchte ich und fand dieses Repository.

crowd-ldap-server

Da es nun eine Software gab ist eine Lösung gefunden die ich nutzen kann, auch wenn sie nur „read-only“ ist.

Ich importierte das Repository und erstellte eine .gitlab-ci.yml um eine JAR Datei zu erstellen. Danke an gitlab für Ihr hervorragendes framework 😉 .

https://gitlab.com/aleks001/crowd-ldap-server/blob/master/.gitlab-ci.yml

Nun braucht man nur der Dokumentation von Integrating Crowd with a Custom Application und dem crowd-ldap-server wiki zu folgen um das Setup zu beginnen.

Ich nutze den systemd um die JAR Datei permanent am laufen zu haben => Daemon.

Aus Sicherheitsgründen sollte die Applikation unter einem nicht privilegierten Benutzer laufen!

useradd -m crowd

Man kann diese Datei als Startpunkt nehmen für seine eigen service Konfiguration.

cat /lib/systemd/system/crowd-ldap-server.service
[Unit]
Description=LDAP Server for Crowd

[Service]
Type=simple
User=crowd
Group=crowd
ExecStart=/home/crowd/app/crowd-ldap-server/run.sh
Restart=on-abort

[Install]
WantedBy=multi-user.target

Das ist die run.sh

cat /home/crowd/app/crowd-ldap-server/run.sh
#!/bin/sh

cd /home/crowd/app/crowd-ldap-server

JAR=target/crowd-ldap-server-1.0.4-SNAPSHOT.jar

# Apache DS Settings
FIXADS="-Duser.language=de -Duser.country=AT"

# SSL Debugging
#DEBUG_SSL="-Djavax.net.debug=ssl"
DEBUG_SSL=

# Run Server
java $FIXADS $DEBUG_SSL -cp etc -jar $JAR $*

Um mit dem Crowd zu kommunizieren ist die Datei crowd.properties notwendig.

cat /home/crowd/app/crowd-ldap-server/etc/crowd.properties
application.name                        crowd-ldap-server
application.password                    <PASSWORD_FROM_CROWD_APPLICATON>
application.login.url                   https://<YOUR_DOMAIN>/crowd/console/

crowd.server.url                        https://<YOUR_DOMAIN>/crowd/services/

session.isauthenticated                 session.isauthenticated
session.tokenkey                        session.tokenkey
session.validationinterval              2
session.lastvalidation                  session.lastvalidation

Um zu testen ob das Setup funktioniert sollte man die Datei run.sh ausführen und testen ob die Verbindung aufgebaut wird..

Um zu testen ob man die LDAP Abfrage funktioniert kann man curl nutzen.

curl -v -u "dn=YOUR_CROWD_LOGIN,ou=users,dc=crowd" \
    'ldap://127.0.0.1:10389/ou=users,dc=crowd?*?sub?'

Nach den erfolgreichen Tests kann man den crowd-ldap-server als Dämon mit dem systemd laufen lassen. Die Logs findet man im syslog.

journalctl -fl -u crowd-ldap-server

Sie können mich auch gerne für weitere Themen kontaktieren.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s