Zum Hauptinhalt springen Skip to page footer

LDAP-Authentifizierung: Einfache Integration und Konfiguration für Jitsi-Meet

| Tutorial | Jitsi Ubuntu Linux

Erfahren Sie in dem Tutorial, wie Sie die LDAP-Authentifizierung nahtlos in Ihre Jitsi-Meet-Umgebung integrieren können. Erfahren Sie, wie Sie mithilfe von LDAP einen zentralen Speicher für Benutzerinformationen einrichten und die Sicherheit und Konsistenz Ihrer Benutzeridentitäten gewährleisten können. Lernen Sie verschiedene Authentifizierungsmethoden kennen und erhalten Sie praktische Schritt-für-Schritt-Anleitungen zur Konfiguration der LDAP-Authentifizierung für Jitsi-Meet. Tauchen Sie ein in die Welt der LDAP-Authentifizierung und optimieren Sie Ihre Videokonferenzen mit erhöhter Benutzersicherheit und vereinfachter Benutzerverwaltung.

LDAP-Authentifizierung

LDAP-Authentifizierung steht für Lightweight Directory Access Protocol-Authentifizierung. LDAP ist ein offener Standard für den Zugriff auf und die Verwaltung von Verzeichnisdiensten und wird häufig zur zentralen Speicherung von Benutzerinformationen wie Benutzernamen, Passwörtern und anderen Identitätsattributen verwendet.

Bei der LDAP-Authentifizierung wird ein LDAP-Server als zentrale Datenbank zum Speichern von Benutzerinformationen verwendet. Wenn der Benutzer sich authentifizieren möchte, muss der Client (z. B. Anwendung oder System) Anmeldeinformationen (Benutzername und Passwort) für den LDAP-Server. Der Server gleicht dann die bereitgestellten Anmeldeinformationen mit den in diesem Verzeichnis gespeicherten Informationen ab.

LDAP-Server können eine Vielzahl von Authentifizierungsmethoden unterstützen, darunter:

  1. Einfache Bindung: Bei dieser Methode sendet der Client den Benutzernamen und das Passwort im Klartext an den Server. Dies ist die einfachste Form der LDAP-Authentifizierung, aber auch die am wenigsten sichere. 
  2. SASL (Simple Authentication and Security Layer): Diese Methode ermöglicht eine sicherere Authentifizierung mithilfe von Mechanismen wie DIGEST-MD5 oder GSSAPI (Kerberos). Ihre Anmeldeinformationen werden in verschlüsselter Form gesendet, um die Sicherheit Ihrer Kommunikation zu gewährleisten.

Durch die LDAP-Authentifizierung können Systeme und Anwendungen auf eine zentrale Benutzerdatenbank zugreifen und Benutzerauthentifizierungsdienste nutzen, ohne Benutzerinformationen lokal zu speichern. Dies ermöglicht eine zentrale Verwaltung von Benutzerkonten, Passwörtern und anderen Identitätsattributen und vereinfacht die Verwaltung und Pflege von Benutzerdaten. Die LDAP-Authentifizierung wird häufig in Unternehmensumgebungen verwendet, in denen eine große Anzahl von Benutzern verwaltet werden muss. Es bietet eine skalierbare und effiziente Möglichkeit, Benutzeranmeldeinformationen zu validieren und die Sicherheit und Konsistenz von Benutzeridentitäten über verschiedene Systeme und Anwendungen hinweg sicherzustellen. 

LDAP-Authentifizierung für jitsi-meet über ldap2

Um die LDAP-Authentifizierung für eine Basisinstallation auf einem Debian-Rechner zu aktivieren sind folgende Schritte notwendig:

docs.tc-mueller.de/link/61

Installieren Sie die notwendigen prosody-module und das empfohlene lua-ldap-Paket:

sudo apt-get install prosody-modules lua-ldap

Wenn Sie lualdap mit luarocks installieren wollen, ist auf aktuellen Versionen von Ubuntu die Distributionsversion von luarocks 5.1, es ist aber 5.2 erforderlich. In diesem Fall müssen Sie luarocks 5.2 manuell installieren, wie hier beschrieben: stackoverflow.com/a/39761123. Installieren Sie dann die SSL 1.0-Header apt-get install libssl1.0-dev, gefolgt von luarocks-5.2 install lualdap && luarocks-5.2 install luacrypto && luarocks-5.2 install jwt-jitsi.

Konfigurieren Sie das LDAP-Modul in /etc/prosody/conf.avail/ldap.cfg.lua

-- https://modules.prosody.im/mod_lib_ldap.html
-- https://modules.prosody.im/mod_auth_ldap2.html
authentication = 'ldap2'

ldap = {
    hostname = 'ldap.example.com',
    bind_dn = 'cn=admin,dc=example,dc=com',
    bind_password = 's3cr37',
    use_tls = true,
    user = {
        usernamefield = 'uid',
        basedn = 'ou=people,dc=example,dc=com',
        filter = '(objectClass=*)',
	-- admin?
        --namefield = 'cn',
    },
}

Verknüpfen Sie die Konfiguration mit dem Konfigurationsverzeichnis:

ln -sf /etc/prosody/conf.avail/ldap.cfg.lua /etc/prosody/conf.d/

Fügen Sie die folgende Zeile in /etc/prosody/prosody.cfg.lua vor dem letzten include ein. Es könnte auch möglich sein, sie einfach oben in die ldap.cfg.lua einzufügen. Die Einstellung soll BOSH-Verbindungen erlauben, wenn sie verschlüsselt werden müssen, aber auch wenn sie unverschlüsselt sind (siehe https://prosody.im/doc/modules/mod_bosh).

consider_bosh_secure = true

Um schließlich die LDAP-Authentifizierung zu aktivieren, bearbeiten Sie /etc/prosody/conf.avail/jitsi.example.com.cfg.lua und ändern Sie die Authentifizierung in ldap2:

authentication = "ldap2"

Starten Sie schließlich den geänderten Dienst neu:

Hosts + Guests

Um jitsi so zu konfigurieren, dass authentifizierte Hosts Räume erstellen und Gäste beitreten können, folgen Sie dem Beispiel für Jicofo - Sichere Domänen

Fügen Sie in /etc/prosody/conf.avail/jitsi.example.com.cfg.lua einen VirtualHost hinzu:

VirtualHost "guest.jitsi.example.com"
    authentication = "anonymous"
    c2s_require_encryption = false

Wenn Sie jedoch einen Turn-Server (coturn-Dienst) installiert haben und Jitsi hinter NAT läuft, muss das Modul "turncredentials" aktiviert sein

VirtualHost "guest.jitsi.example.com"
    authentication = "anonymous"
    modules_enabled = {
            "bosh";
            "pubsub";
            "ping";
            "speakerstats";
            "turncredentials";
            "conference_duration";
    }
    c2s_require_encryption = false

In /etc/jitsi/meet/jitsi.example.com-config.js aktivieren und ändern Sie die Zeile:

anonymousdomain: 'guest.jitsi.example.com',

In /etc/jitsi/jicofo/sip-communicator.properties hinzufügen:

org.jitsi.jicofo.auth.URL=XMPP:jitsi.example.com

Wenn Sie nicht Jigasi verwenden, müssen Sie dem obigen Link folgen und diese Konfiguration überprüfen.

 Starten Sie schließlich die geänderten Dienste neu und aktualisieren Sie Ihren Browser:

sudo service prosody restart; sudo service jicofo restart

LDAP-Authentifizierung für jitsi-meet über cyrus/saslauthd

Dieser Weg wird auch von Jitsi-Docker genutzt. Bitte beachten Sie, dass diese Methode mit Prosody 0.11.0 nicht immer funktioniert.

Info

Bitte richten Sie zuerst eine "sichere Domäne" ein, wie hier beschrieben.

Zuerst müssen Sie die folgenden Pakete installieren:

apt install sasl2-bin libsasl2-modules-ldap lua-cyrussasl

Dann gehen wir zur Prosody über. Editieren Sie die Datei /etc/prosody/conf.avail/meet.jit.si.cfg.lua (öffnen Sie die richtige Datei mit Ihrem Hostnamen):

Ändern Sie die Authentifizierung auf cyrus und fügen Sie den auth_cyrus zu modules_enabled hinzu.

Sie müssen auch die Konfigurationsoptionen hinzufügen

 cyrus_application_name = "xmpp"
 allow_unencrypted_plain_auth = true

Die Datei sollte jetzt so aussehen:

VirtualHost "meet.jit.si"
        -- enabled = false -- Remove this line to enable this host
        authentication = "cyrus" -- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Change this
        -- Properties below are modified by jitsi-meet-tokens package config
        -- and authentication above is switched to "token"
        --app_id="example_app_id"
        --app_secret="example_app_secret"
        -- Assign this host a certificate for TLS, otherwise it would use the one
        -- set in the global section (if any).
        -- Note that old-style SSL on port 5223 only supports one certificate, and will always
        -- use the global one.
        ssl = {
                key = "/etc/prosody/certs/meet.jit.si.key";
                certificate = "/etc/prosody/certs/meet.jit.si.crt";
        }
		
		cyrus_application_name = "xmpp" -- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Add this
		allow_unencrypted_plain_auth = true -- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Add this

        -- we need bosh
        modules_enabled = {
            "bosh";
            "pubsub";
            "ping"; -- Enable mod_ping
	    "auth_cyrus"; -- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Add this
        }
		
        c2s_require_encryption = false

Konfigurieren von saslauthd

Erstellen Sie die Datei /etc/sasl/xmpp.conf. Falls der Ordner sasl noch nicht existiert, erstellen Sie ihn.

 Fügen Sie den folgenden Text in die xmpp.conf ein:

pwcheck_method: saslauthd
mech_list: PLAIN

Erstellen Sie nun die Datei /etc/saslauthd.conf und fügen Sie folgende Zeilen ein:

ldap_servers: ldap://10.0.0.1
ldap_search_base: dc=my,dc=search,dc=base
ldap_bind_dn: cn=Administrator,cn=Users,dc=foo,dc=bar
ldap_bind_pw: PassW0rd
ldap_filter: (samaccountname=%u)
ldap_version: 3
ldap_auth_method: bind

Ersetzen Sie die IP durch Ihre, sowie die Suchbasis und den Bind-Benutzer/Passwort! Im obigen Beispiel ist KEIN TLS aktiviert. Wenn Sie TLS aktiviert haben möchten, fügen Sie zusätzlich Folgendes hinzu

ldap_tls_key: /config/certs/meet.jit.si.key
ldap_tls_cert: /config/certs/meet.jit.si.crt
ldap_tls_check_peer: yes
ldap_tls_cacert_file: /etc/ssl/certs/ca-certificates.crt
ldap_tls_cacert_dir: /etc/ssl/certs

Passen Sie die Konfiguration an Ihre gegebenheiten an. Ändern Sie auch das URL-Schema von ldap:// in ldaps://. Vielleicht müssen Sie ldap_tls_ciphers:, ldap_port: ebenfalls hinzufügen.

Verwenden Sie ein anderes Attribut als samaccoutname

Ein paar Filterbeispiele:

  • ldap_filter: (samaccountname=%u) sucht im Feld Benutzername
  • ldap_filter: (mail=%u) würde es Ihnen erlauben, eine E-Mail zu aktivieren. WARNUNG: Das  funktioniert nicht immer. Sobald das @-Zeichen eingeschlossen wird, zeigt Jitsi unter Umständen ein endloses "Connecting ..." an.
    •  
      • Verwenden Sie ldap_filter: (mail=%u*) stattdessen (beachten Sie das * direkt nach dem %u!), und weisen Sie Ihre Benutzer an, den Teil vor dem @-Zeichen ihrer Mail-Adresse einzugeben.

Der nächste Schritt besteht darin, die Datei /etc/default/saslauthd zu bearbeiten:

  • Ändern Sie START in yes
  • Ändern Sie MECHANISMS in ldap
  • Ändern Sie MECH_OPTIONS in /etc/saslauthd.conf

und starten Sie den Dienst mit service saslauthd restart neu. Sie müssen auch Prosody mit dem Befehl service prosody restart neu starten.

 Prosody kann noch nicht mit saslauthd sprechen. Sie müssen chmod 777 /var/run/saslauthd/ ausführen, um den Ordner saslauthd für alle schreibbar zu machen.

Achtung

Dieser Ordner wird bei jedem Neustart von saslauthd zurückgesetzt (z.B. beim Neustart des Servers), daher müssen Sie sicherstellen, dass dieser Ordner bei jedem Neustart von saslauthd verändert wird.

Eine mögliche Lösung ist das Hinzufügen von prosody zur sasl-Gruppe durch Ausführen von usermod -aG sasl prosody.