Nutze crowd mit einem LDAP Klienten [UPDATE]
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
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