Matrix Authentication Service
Achtung: diese Info-Seite erfordert einen Hostmaster mit Zugriff auf die Apache-Domain-Konfigurationsdatei, mit leichter Abänderung sollte die .htaccess allerdings genauso funktionieren.
MAS beginnt die alte Authentifizierung direkt über Synapse zu ersetzen. Schon heute fällt es langsam auf, wenn der Dienst fehlt – beispielsweise weil ElementX diesen für SSO benötigt oder weil sonst der Login via QR-Code nicht unterstützt wird.
Offizielle Dokumentation
Die offizielle Dokumentation befindet sich unter element-hq.github.io/matrix-authentication-service.
Vorbereitung im Userspace
Verzeichnisstruktur (Vorschlag)
├── bin
│ ├── mas
│ └── mas-cli -> /home/pacs/xyz00/users/mas/bin/mas/mas-cli # optional
├── doms
│ └── auth.matrix.domain.de
├── etc
│ └── config.yaml
├── readme.md
├── scripts
│ └── update.sh
└── var
└── log
Updatescript
Dieses Script ist auch schon zur Vorbereitung nützlich. Es basiert auf og. Wiki und holt sich die neueste Release und entpackt diese in bin/.
ARCH=x86_64
OS=linux
VERSION=latest
# URL to the right archive
URL="https://github.com/element-hq/matrix-authentication-service/releases/${VERSION}/download/mas-cli-${ARCH}-${OS}.tar.gz"
curl -sL "$URL" | tar xzC $HOME/bin/mas
ln -s $HOME/bin/mas/mas-cli $HOME/bin/ # optional
systemctl restart --user mas.service
Config
In Sachen Konfiguration, können wir einfach den offiziellen Anweisung des Projekts folgen. Einzig die default Ports, können bei Hostsharing so nicht genutzt werden. Als Beispiel für den http web-listener könnte sich 32802
anbieten, sofern dieser frei ist.
Systemd
[Unit]
Description=Matrix Authentication Service
After=network-online.target
After=postgresql.target
[Service]
Type=simple
WorkingDirectory=%h/bin/mas
ExecStart=%h/bin/mas/mas-cli server -c %h/etc/config.yaml
[Install]
WantedBy=default.target
# wenn alles bereit:
systemctl enable --now --user mas
# dies aktiviert den dienst für starten nach reboot und startet den dienst sofort (now)
QR Code Support in Synapse
Leicht zu übersehen ist ein zu aktivierendes MSC in Synapse um QR-Code Login zu unterstützen:
experimental_features:
msc4108_enabled: true
Achtung! Zum testen muss Keystorage für den User aktiv sein!
Apache
Außerhalb der .htaccess (Hostmaster, FIXME), für die Domain des Synapse homeservers(!).
# Wichtig, da sonst dieser Endpoint nicht funktioniert, und es zu verwirrenden Fehlern kommt.
SetEnvIf request_Uri "/_synapse/client/rendezvous" no-gzip
# FIXME: retry in .htaccess
ProxyPassMatch "^/(_matrix/client/[^/]+/(login|logout|refresh).*)" "http://127.0.0.1:32802/$1"
ProxyPassReverse "^/(_matrix/client/[^/]+/(login|logout|refresh).*)" "http://127.0.0.1:32802/$1"
.htaccess für MAS:
DirectoryIndex disabled
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* http://localhost:32802%{REQUEST_URI} [NE,proxy]
RequestHeader set X-Forwarded-Proto "https"
Weitere Tipps
Migration
Laut Wiki benötigt MAS Zugriff auf die homeserver.yaml
, es reicht aber einfach eine Datei mit den nötigsten Einstellungen bereitzulegen: Evtl der federation listener, Datenbank und falls vorhanden, der OIDC Provider.
Beispiel Keycloak
Um die Provider-ID für Keycloak zu matchen, kann upstream_oauth2.providers.synapse_idp_id
genutzt werden. MAS unterstützt Benennungen wie in unserem Fall oidc-keycloak
nicht mehr, aber muss das für die Migration matchen.