Skip to Content
Skip Breadcrumb

Ich hatte die Anforderung den Atlassian Crowd via LDAP Interface ansprechen zu müssen, was derzeit, mit Bordmitteln nicht möglich ist. 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 kontaktierte natürlich den Hersteller Atlassian und frage nach ob es einen Plan gibt die neuere OpenID Connect Spezifikation zu implementieren. Wie üblich bei so großen Firmen hieß es “im prinzip ja” aber wann was das feature kommt kann man nicht sagen wie man aus der Antwort entnehmen kann crowd openid connect .

Das alte OpenID Interface war keine Lösung für mich und so suchte ich bei startpage und fand das repo crowd-ldap-server, was als Lösung für mich möglich war.

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

need to be include like gist short code

https://gitlab.com/aleks001/crowd-ldap-server/blob/a6f60428ae251d1003b1f6274e01cce039a3fc1e/.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.

useradd -m crowd

Man kann diese Datei als Startpunkt nehmen für seine eigene 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 Datei

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.

UPDATE: Für Crowd 3.0 ist die Datei crowd.properties obsolete The crowd.properties file is no longer used

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 lässt man die Datei run.sh laufen und exekutiert den curl Befehl.

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 gerne kontakieren für Fragen und Aufträge