Hallo
(wie so oft) zufällig entdeckt, dass man bei der BBB-Installation mit einer Option Keycloak mit installieren kann und schon hat ein mehrtägiges Abenteuer begonnen.
Letztendlich ist eine SSO-Lösung für unsere Schule entstanden. Da es da so einige Stolpersteinchen gab dachte ich versuche hier mal kurz mein Vorgehen mit euch zu teilen, damit man da vll. ein paar Minuten Lebenszeit sparen kann
Realisiert wurde eine BBB-Installation mit Greenlight und Keycloak. Letzteres ermöglicht es den Benutzerstamm aus dem LDAP der LML7 zu holen und dort eine zentrale Benutzer-/Rechte-/Zugriffs-Verwaltung für die über die single sing on Protokolle OIDC oder SAML angebunden Dienste zu ermöglichen.
Dienst | SSO-Typ | Einschränkungen/Probleme |
---|---|---|
Greenlight (BBB) | OpenID Connect | Läuft |
Nextcloud | SAML | Läuft |
Moodle | SAML | Moodle bekommt zentralen Logout nicht mit. Moodle selbst loggt aber zentral aus. |
Dokuwiki | OpenID Connect | Läuft |
Bookstack | SAML | Läuft |
0. Installation von BigBlueButton inkl. Greenlight und Keycloak
Installation
… läuft auf frischem Ubuntu 22.04 LTS problemlos mit offiziellen Skript durch.
wget -qO- https://raw.githubusercontent.com/bigbluebutton/bbb-install/v2.7.x-release/bbb-install.sh |bash -s -- -v focal-240 -s bbb.example.com -e admin@example.com -g -w -t <key>:<secret>
(BigBlueButton : LTI)
das -g ist für greenlight, -k für keycloak
(Install Greenlight v3 | BigBlueButton)
Die Optionen <key>
und <secret>
habe ich zunächst aus den alten BBB-Instanz übernommen.
<key>
= bbb
<secret>
findet man mit bbb-conf --secret
ganze ist mit bbb-conf --lti
überprüfbar.
(Falls relevant: Habe beim ersten Durchlauf ohne -g -w -t <key>:<secret>
installiert - weil nicht gelesen - und beim zweiten Durchlauf dann wie oben.)
(Install BigBlueButton | BigBlueButton)
(GitHub - bigbluebutton/bbb-install: BASH script to install BigBlueButton in 30 minutes.)
Update/Upgrade
Installationsskript einfach nochmal ausführen…
BBB Befehle
bbb-conf --restart #Neustarten...
bbb-conf --status #Aktueller Status der Dienste
dpkg -l | grep bbb- # Auflistung aller core BigBlueButton Packete
Standard Präsentation anpassen
cp default.pdf /var/www/bigbluebutton-default/assets/default.pdf
(Für die Moodle-Räume geht das auch via Moodle-Plugin-Einstellungen…)
BBB Moodle-Integration
Dafür brauchts dieses Addon in Moodle.
(Moodle Plugins directory: BigBlueButtonBN | Moodle.org)
Und das Secret aus BBB.
cat /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties | grep Salt
oder
bbb-conf --secret
In den Einstellungen des Moodle-Plugins dann
BigBlueButton-Server-URL (bigbluebuttonbn_server_url): https://bbb.example.com/bigbluebutton/
und
BigBlueButton Shared Secret bigbluebuttonbn_shared_secret: geheimgeheimgeheim
eingeben und anpassen,was man so mag, das war es auch schon .
1. Keycloak - Grund-Konfiguration / LDAP
Habe mich im wesentlichen hier orientiert: (External Authentication | BigBlueButton)
Ich übernehme mal deren WICHTIGER HINWEIS: Dies ist eine Beispielkonfiguration, die zum Testen verwendet werden soll. Für ein komplettes Produktionsset lesen Sie bitte Keycloaks Dokumentation.
-
Administratorpanel aufrufen:
https://bbb.example.com/keycloak/admin
-
Neuen „Realm“ anlegen, indem man in der linken oberen Ecke auf den
Master
Realm klickt, dann aufCreate Realm
.
-
Als
Realm name
/Realm ID
besten was neutrales nehmen, wielml-ldap
oder so… nacher ändern macht viel Arbeit, weil das in alle Links eingebaut wird. -
Unter
User federation
die OptionAdd LDAP providers
auswählen.
Vorbereitend muss man auf seiner LML einen bind-user z.B.keycloak-binduser
anlegen. Eine sehr gute Anleitung dazu gibt es hier in der tollen LML-Doku (Externe Authentifizierung - Nextcloud — linuxmuster.net latest Dokumentation)
Dieser binduser hat nur read-only Berechtigungen, d.h. wenn ihr in den LDAP schreiben wollt z.B. für Passwortänderungen, dann braucht ihr einen global-admin Account dazu.
(Wir haben den BBB-/Keycloak-Server via VPN an die LML getunnelt; IP/Domain entsprechend anpassen… und wenn über öffentl. Netz natürlich auch VerschlüsselungEnable StartTLS
aktivieren)
Die Einstellungen wann da was synchronisiert wird kann man natürlich mal überdenken . Der restliche Teil darunter ist alles deaktiviert. Speichern nicht vergessen. -
Mappers („Datenzuordnung“) anlegen.
Die wesentlichen sind schon da, wir haben noch folgende dazu angelegt:
Spalte 1 | Spalte 2 | Spalte 3 | Spalte 4 |
---|---|---|---|
homeDirectory | user-attribute-ldap-mapper | homeDirectory | homeDirectory |
sophomorixAdminClass | user-attribute-ldap-mapper | sophomorixAdminClass | sophomorixAdminClass |
und für die Gruppen-Zuordnung (Klassen, Lehrer usw.): |
Im Anschluss kann man mal einen Sync wagen
Danach kann man unter Benutzer und Groups das Ergebnis prüfen. Nicht wundern, Ausgabe bleibt leer, man muss suchen oder * als Platzhalter
Unter den Reitern Attribute und Groups kann man mal vergleichen ob der Sync passt.
Ggf. gleich mal spielen, Attribute löschen, nochmal den Sync anstoßen und gucken was passiert usw. was man halt so testen mag
2 Greenlight
2.1. Client anlegen / Zugang für Dienst in Keycloak einrichten
Anleitung basiert im wesentlichen von hier: (External Authentication | BigBlueButton)
Neuen Client
anlegen.
Die
Client-ID
ist nicht mehr änderbar. Display in der Keycloak-Konsole (https://bbb.example.com/keycloak/realms/lml-ldap/account/
), damit die User dort ein Lesezeichen zum Dienst angezeigt bekommen…Spannendwerweise muss man die
Client authentication
aktivieren.Front channel logout
sollte man überprüfen, dass das auch aktiviert ist, damit man auch bei Greenlight ausloggt wird, wenn man sich bei keycloak ausloggt.
2.2 Anpassen der Greenlight Einstellungen zur Registrierung
Admin-Gui:
https://bbb.example.com/admin/site_settings
Man sollte hier darauf achten, dass Keycloak-User auch angelegt werden können, indem man die Offene Registrierung
zulässt. Keine Sorge, die Registrierung auf der Webseite funktioniert nach dem nächsten Schritt nicht mehr…
2.3. Anpassen der Greenlight Setup auf dem BBB-Server
Tipp zu Beginn… zum Testen… peinlicher als sich selbst auszusperren und so…
Als Admin erstmal mit Browser 1 sich einloggen (und bleiben). Dann Setup usw ändern und das mit zweitem Browser (privater Modus geht auch…) den Login testen…
nano /root/greenlight-v3/.env
(Kann sein, dass der Pfad variiert, je nach dem wo mann das bbb-install-Skript ausgeführt hat.)
### EXTERNAL AUTHENTICATION METHODS
OPENID_CONNECT_CLIENT_ID=greenlight
OPENID_CONNECT_CLIENT_SECRET=<YOUR_SECRET>
OPENID_CONNECT_ISSUER=https://bbb.example.com/keycloak/realms/lml-ldap
OPENID_CONNECT_REDIRECT=https://bbb.example.com/
OPENID_CONNECT_UID_FIELD=email
(Wenn man schon gerade in der Setup/.env ist kann man dort auch gleich noch die SMTP-Konfiguration für E-Mail-Benachrichtigungen bzw. Zugangsdaten für einen E-Mail Account hinterlegen)
Das Client secret
gibt in den Client-Einstellungen
Den
<ISSUER_URL>
gibt es ein den Realm-EinstellungenDann:
- Greenlight neustarten um Änderungen zu übernehmen
docker-compose -f greenlight-v3 down
docker-compose -f greenlight-v3 up -d
Oh, so kurz ist das wohl doch nicht , der Rest folgt die Tage.
Liebe Grüße
Tobi