LLDAP: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(Einleitung, Download, Konfig)
 
KKeine Bearbeitungszusammenfassung
 
(12 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 5: Zeile 5:
=== Vorbereitungen in HSAdmin ===
=== Vorbereitungen in HSAdmin ===


Mit Hilfe von HSAdmin werden im ersten Schritt ein Service-User, eine Domain und ein PostgreSQL-User mit PostgreSQL-Datenbank angelegt. Der Service-User heißt im folgenden "xyz00-lldap", die Domain "account.hs-example.de", PostgreSQL-User und -Datenbank heißen beide "xyz00_lldap". Das PostgreSQL-Passwort sei "pg_password_99".
Mit Hilfe von HSAdmin werden im ersten Schritt ein Service-User, eine Domain und ein PostgreSQL-User mit PostgreSQL-Datenbank angelegt. Der Service-User heißt im folgenden "''xyz00-lldap''", die Domain "''account.hs-example.de''", PostgreSQL-User und -Datenbank heißen beide "''xyz00_lldap''". Das PostgreSQL-Passwort sei "''pg_password_99''".


=== Download und entpacken ===
=== Download und entpacken ===
Zeile 11: Zeile 11:
Die aktuelle Version von LLDAP ist v0.5.0.
Die aktuelle Version von LLDAP ist v0.5.0.


Ich melde mich als User "xyz00-lldap" und lade das Binärpaket mit wget:
Ich melde mich als User "''xyz00-lldap''" und lade das Binärpaket mit wget:


<nowiki>
<syntaxhighlight lang="bash">
wget https://github.com/lldap/lldap/releases/download/v0.5.0/amd64-lldap.tar.gz
wget https://github.com/lldap/lldap/releases/download/v0.5.0/amd64-lldap.tar.gz
tar xzf amd64-lldap.tar.gz
tar xzf amd64-lldap.tar.gz
mv amd64-lldap lldap  
mv amd64-lldap lldap  
</nowiki>
</syntaxhighlight>


=== Konfiguration ===
=== Konfiguration ===


Die Konfiguration erfolgt über eine Datei "lldap_config.toml". die Datei erstelle ich wie folgt:
Die Konfiguration erfolgt über eine Datei "''lldap_config.toml''" im Verzeichnis "''~/lldap''". die Datei erstelle ich wie folgt:


<nowiki>
<syntaxhighlight lang="bash">
cd ~/lldap
cd ~/lldap
touch lldap_config.toml
touch lldap_config.toml
vim lldap_config.toml
vim lldap_config.toml
</nowiki>
</syntaxhighlight>


der Inhalt nach dem Bearbeiten ist zum Beispiel:
der Inhalt nach dem Bearbeiten ist zum Beispiel:


<nowiki>
<syntaxhighlight lang="toml">
verbose=true
verbose=true
ldap_host = "127.0.0.1"
ldap_host = "127.0.0.1"
ldap_port = 33891
ldap_port = 33891
http_host = "127.0.0.1"
http_host = "127.0.0.1"
http_port= 33881
http_port= 33881
http_url = "https://account.hs-example.de"
http_url = "https://account.hs-example.de"
jwt_secret = "generierte-zufallszeichenkett-als-secret"
jwt_secret = "generierte-zufallszeichenkett-als-secret"
ldap_base_dn = "dc=hs-example,dc=de"
ldap_base_dn = "dc=hs-example,dc=de"
ldap_user_dn = "admin"
ldap_user_dn = "admin"
ldap_user_email = "webmaster@hs-example.de"
ldap_user_email = "webmaster@hs-example.de"
ldap_user_pass = "ldap-admin-password-generieren"
ldap_user_pass = "ldap-admin-password-generieren"
force_ldap_user_pass_reset = false
force_ldap_user_pass_reset = false
database_url = "postgres://xyz00_lldap:pg_password_99@localhost/xyz00_lldap"
database_url = "postgres://xyz00_lldap:pg_password_99@localhost/xyz00_lldap"
key_seed = "generierte-zufallszeichenkette"
key_seed = "generierte-zufallszeichenkette"
[smtp_options]
enable_password_reset = true
server = "localhost"
port = 4025
smtp_encryption = "NONE"
from="LLDAP Admin <webmaster@hs-example.de>"
[ldaps_options]
enabled = false
</nowiki>


[smtp_options]
enable_password_reset = true
server = "localhost"
port = 4025
smtp_encryption = "NONE"
from="LLDAP Admin <webmaster@hs-example.de>"


[ldaps_options]
enabled = false
</syntaxhighlight>
Bei der Installation sollten folgende Einstellungen angepasst werden:
* die Ports für LDAP und HTTP
* Die Domain "''hs-example.de''" bzw. "''account.hs-example.de''"
* Der Account-Präfix "''xyz00''"
* Die Passworte und Secret-Zeichenketten
* "''verbose''" soltle auf "''false''" geändert werden, wenn alles läuft.
Das Anlegen der Datenbank-Tabellen erfolgt und ein ersten Start des Servers erfolgt mit den Befehlen:
<syntaxhighlight lang="bash">
cd ~/lldap
./lldap create_schema
./lldap run
Ctrl-C
</syntaxhighlight>
=== Proxy-Konfiguration ===
Für den Zugriff auf das Admin-Frontend über den Browser konfiguriere ich die Domain:
<syntaxhighlight lang="bash">
cd ~/doms/account.hs-example.de
rm -rf subs/www subs-ssl/www htdocs-ssl
ln -s $HOME/lldap/app htdocs-ssl
touch htdocs-ssl/.htaccess
vim htdocs-ssl/.htaccess
</syntaxhighlight>
Mit dem Inhalt:
<syntaxhighlight lang="apache">
DirectoryIndex disabled
RewriteEngine On
RewriteBase /
   
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .* http://127.0.0.1:33881%{REQUEST_URI} [proxy]
RequestHeader set X-Forwarded-Proto "https"
</syntaxhighlight>
Achtung: Port 33881 wie in der Konfig-Datei anpassen!
=== LLDAP als Service einrichten ===
LLDAP soll als Service unter Kontrolle von SystemD laufen.
<syntaxhighlight lang="bash">
cd ~
mkdir -p .config/systemd/user
mkdir var
vim .config/systemd/user/lldap.service
</syntaxhighlight>
Inhalt der Datei:
<syntaxhighlight lang="toml">
[Unit]
Description=LLDAP Service
[Service]
WorkingDirectory=%h/lldap
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
ExecStart=%h/lldap/lldap run
StandardOutput=file:%h/var/lldap.log
StandardError=inherit
Restart=always
PrivateTmp=true
NoNewPrivileges=true
[Install]
WantedBy=default.target
</syntaxhighlight>
Aktivieren und Starten des Dienstes:
<syntaxhighlight lang="bash">
cd ~
systemctl --user daemon-reload
systemctl --user enable lldap.service
systemctl --user start lldap.service
</syntaxhighlight>
Wenn alles gut gegangen ist, kann mann sich als "''admin''" mit dem Passwort aus der Zeile "''ldap_user_pass''" unter https://account.hs-exampel.de anmelden.
=== weitere Verbesserungen ===
Bisher ging es darum, schnell einen LDAP-Dienst aufzusetzen. Leider lädt die fertig kompilierte Distribution, die wir hier benutzt haben, ihre Fonts, das CSS und JavaScript aus CDN-Netzwerken und von Google Servern. Das wollte ihr vermutlich nicht. Ich habe dazu den folgenden Issue im Github-Tracker gefunden: https://github.com/lldap/lldap/issues/93 Wenn ich richtig verstehe, kann man selbst eine Distribution erstellen, die die entsprechenden Ressourcen lokal hostet.


=== Links ===
=== Links ===


* [https://github.com/lldap/lldap Github Projekt LLDAP]
* [https://github.com/lldap/lldap Github Projekt LLDAP]
* [https://github.com/lldap/lldap/tree/main?tab=readme-ov-file#client-configuration Client-Konfigurationsbeispiele]
----
[[Kategorie:HSDoku]]
[[Kategorie:Installationsanleitungen]]
[[Kategorie:Software]]
[[Kategorie:SSO]]

Aktuelle Version vom 14. Oktober 2024, 10:38 Uhr

LDAP Kontoverwaltung mit LLDAP

LLDAP ist ein LDAP Server, der in der Programmiersprache Rust implementiert ist. LLDAP verwendet eine relationale Datenbank zum Speichern der Accounts und Gruppen. LLDAP läßt sich als eigener Daemon betreiben. Er bringt ein einfaches Webfrontend für die Verwaltung der Konten und Gruppen und eine Funktion zum Passwort-Rücksetzen mit.

Vorbereitungen in HSAdmin

Mit Hilfe von HSAdmin werden im ersten Schritt ein Service-User, eine Domain und ein PostgreSQL-User mit PostgreSQL-Datenbank angelegt. Der Service-User heißt im folgenden "xyz00-lldap", die Domain "account.hs-example.de", PostgreSQL-User und -Datenbank heißen beide "xyz00_lldap". Das PostgreSQL-Passwort sei "pg_password_99".

Download und entpacken

Die aktuelle Version von LLDAP ist v0.5.0.

Ich melde mich als User "xyz00-lldap" und lade das Binärpaket mit wget:

wget https://github.com/lldap/lldap/releases/download/v0.5.0/amd64-lldap.tar.gz
tar xzf amd64-lldap.tar.gz
mv amd64-lldap lldap

Konfiguration

Die Konfiguration erfolgt über eine Datei "lldap_config.toml" im Verzeichnis "~/lldap". die Datei erstelle ich wie folgt:

cd ~/lldap
touch lldap_config.toml
vim lldap_config.toml

der Inhalt nach dem Bearbeiten ist zum Beispiel:

verbose=true
ldap_host = "127.0.0.1"
ldap_port = 33891
http_host = "127.0.0.1"
http_port= 33881
http_url = "https://account.hs-example.de"
jwt_secret = "generierte-zufallszeichenkett-als-secret"
ldap_base_dn = "dc=hs-example,dc=de"
ldap_user_dn = "admin"
ldap_user_email = "webmaster@hs-example.de"
ldap_user_pass = "ldap-admin-password-generieren"
force_ldap_user_pass_reset = false
database_url = "postgres://xyz00_lldap:pg_password_99@localhost/xyz00_lldap"
key_seed = "generierte-zufallszeichenkette"

[smtp_options]
enable_password_reset = true
server = "localhost"
port = 4025
smtp_encryption = "NONE"
from="LLDAP Admin <webmaster@hs-example.de>"

[ldaps_options]
enabled = false

Bei der Installation sollten folgende Einstellungen angepasst werden:

  • die Ports für LDAP und HTTP
  • Die Domain "hs-example.de" bzw. "account.hs-example.de"
  • Der Account-Präfix "xyz00"
  • Die Passworte und Secret-Zeichenketten
  • "verbose" soltle auf "false" geändert werden, wenn alles läuft.

Das Anlegen der Datenbank-Tabellen erfolgt und ein ersten Start des Servers erfolgt mit den Befehlen:

cd ~/lldap
./lldap create_schema
./lldap run
Ctrl-C

Proxy-Konfiguration

Für den Zugriff auf das Admin-Frontend über den Browser konfiguriere ich die Domain:

cd ~/doms/account.hs-example.de
rm -rf subs/www subs-ssl/www htdocs-ssl
ln -s $HOME/lldap/app htdocs-ssl
touch htdocs-ssl/.htaccess
vim htdocs-ssl/.htaccess

Mit dem Inhalt:

DirectoryIndex disabled
RewriteEngine On
RewriteBase /
    
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .* http://127.0.0.1:33881%{REQUEST_URI} [proxy]
RequestHeader set X-Forwarded-Proto "https"

Achtung: Port 33881 wie in der Konfig-Datei anpassen!

LLDAP als Service einrichten

LLDAP soll als Service unter Kontrolle von SystemD laufen.

cd ~
mkdir -p .config/systemd/user
mkdir var
vim .config/systemd/user/lldap.service

Inhalt der Datei:

[Unit]
Description=LLDAP Service

[Service]
WorkingDirectory=%h/lldap
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
ExecStart=%h/lldap/lldap run
StandardOutput=file:%h/var/lldap.log
StandardError=inherit
Restart=always
PrivateTmp=true
NoNewPrivileges=true

[Install]
WantedBy=default.target

Aktivieren und Starten des Dienstes:

cd ~
systemctl --user daemon-reload
systemctl --user enable lldap.service
systemctl --user start lldap.service

Wenn alles gut gegangen ist, kann mann sich als "admin" mit dem Passwort aus der Zeile "ldap_user_pass" unter https://account.hs-exampel.de anmelden.

weitere Verbesserungen

Bisher ging es darum, schnell einen LDAP-Dienst aufzusetzen. Leider lädt die fertig kompilierte Distribution, die wir hier benutzt haben, ihre Fonts, das CSS und JavaScript aus CDN-Netzwerken und von Google Servern. Das wollte ihr vermutlich nicht. Ich habe dazu den folgenden Issue im Github-Tracker gefunden: https://github.com/lldap/lldap/issues/93 Wenn ich richtig verstehe, kann man selbst eine Distribution erstellen, die die entsprechenden Ressourcen lokal hostet.

Links