Matrix Authentication Service

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen

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.