OAuth 2.0 Plugin für Matrix Synapse Server

  • Guten Tag,

    wir würden unserer Community gerne einen Synapse Server für das Matrix Protokoll neben unserem Woltlab Forum anbieten. Dafür wäre es sinnvoll wenn man sich dort mit den gleichen Credentials anmelden kann wie im Board.

    Das Oauth Plugin scheint dafür geeignet zu sein.

    Ich hätte da im Vorfeld jedoch noch zwei Fragen:

    1. Würde eine Verbindung zwischen dem Plugin und Synapse schon mal probiert?

    2. Ist es möglich den Login an einen Userrang zu binden? Also das ein Login via Oauth nur möglich ist wenn der User schon eine gewissen Benutzerrang hat?

    Vielen Dank im Voraus.

    • Offizieller Beitrag

    1. Würde eine Verbindung zwischen dem Plugin und Synapse schon mal probiert?

    Nein, wir haben dazu keine Erfahrung und können dazu auch keinen Support geben.

    2. Ist es möglich den Login an einen Userrang zu binden? Also das ein Login via Oauth nur möglich ist wenn der User schon eine gewissen Benutzerrang hat?

    Nein, über den Benutzerrang geht es nicht. Man kann den Zugriff auf eine Benutzergruppe beschränken, d.h. man kann sich eine Lösung bauen, dass Mitglieder automatisch in eine Benutzergruppe kommen, wenn ein Rang erreicht ist und darüber den Zugriff steuern.

  • Danke für die schnelle Antwort.

    Soviel ich weiß gibt es ja die Möglichkeit die Produkte auszuprobieren. Da könnte ich ja mal versuchen ob ich die richtigen einstellungen hinbekomme um die Services zu "verheiraten".

    Benutzergruppen nutzen wir ja schon. Benutzer die eine bestimmte Beteiligung im Forum zeigen etc. werden auf diesem Wege auch für den Versand von PM's freigeschaltet. Die gleiche Mechanik kann ich dann also auch dafür nutzen um eine Authentifizierung über das Plugin zuzulassen oder halt nicht?

    • Offizieller Beitrag

    Benutzergruppen nutzen wir ja schon. Benutzer die eine bestimmte Beteiligung im Forum zeigen etc. werden auf diesem Wege auch für den Versand von PM's freigeschaltet. Die gleiche Mechanik kann ich dann also auch dafür nutzen um eine Authentifizierung über das Plugin zuzulassen oder halt nicht?

    Genau. Du kannst bei der Anwendung definieren, welche Benutzergruppen darauf zugreifen dürfen. Diese Funktion gibt es aber erst ab dem WSC 6.0!

    Soviel ich weiß gibt es ja die Möglichkeit die Produkte auszuprobieren. Da könnte ich ja mal versuchen ob ich die richtigen einstellungen hinbekomme um die Services zu "verheiraten".

    Ja, genau. Da kannst du es entsprechend testen. Eine Demo-Instanz kannst du hier anfordern: https://www.viecode.com/demo/

  • Okay ich habe mir mal einen Test Synapse Server angelegt und mir eine OIDC Konfiguration zusammengebaut.

    Leider komme ich an ein paar stellen nicht weiter.

    Versuche ich den openid scope zu laden startet Matrix garnicht richtig durch. Es geht beim Startup ein Get Request an https://demo.viecode.com/ID-der-Demoinstanz/open-id-jwks aber da kommt nur ein 404 zurück. So startet Synapse nicht.

    Schalte ich die discovery ab kann ich das jedoch umgehen.

    Nun komme ich so weit das ich über Element eine Anfrage an den OAuth Server stellen kann.

    Erteile ich jedoch in WBB Berechtigung kann Synapse keine Daten abrufen weil es einen 404 vom open-id-user-information Endpoint gibt.

    Code
    synapse-synapse-1   | 2024-01-17 14:47:58,866 - synapse.handlers.oidc - 256 - INFO - GET-7 - Received OIDC callback for IdP oidc
    synapse-synapse-1   | 2024-01-17 14:47:58,995 - synapse.http.client - 418 - INFO - GET-7 - Received response to POST https://demo.viecode.com/demoinstanz/oauth2-token: 200
    synapse-synapse-1   | 2024-01-17 14:47:59,025 - synapse.http.client - 418 - INFO - GET-7 - Received response to GET https://demo.viecode.com/demoinstanz/open-id-user-information: 404

    Hast du vielleicht irgendeine Ahnung warum das passiert?

    Und vielleicht noch eine andere frage: Gibt es eine Liste der Scopes bzw. der darin enthaltenen Claims die ja nach konfiguration des Plugins ausgeliefert werden?

    • Offizieller Beitrag

    In den Demo-Instanzen sind die SEO-Umschreibungen nicht aktiviert, daher müssen die URLs so aussehen: https://demo.viecode.com/demoinstanz/index.php?oauth2-token

    Die unterstützten Scopes sind openid, nickname, profile, email, email_verified, preferred_username, locale, rank, birthdate, aboutMe, gender, location, occupation, hobbies, website, icq, skype, facebook, twitter, zoneinfo, groups, picture, coverPhoto

  • Habe die Url's gerade mal angepasst der 404 ist aber immer noch da:

    Code
    synapse-synapse-1   | 2024-01-17 15:27:06,119 - synapse.http.client - 418 - INFO - GET-6 - Received response to POST https://demo.viecode.com/demoinstanz/index.php?oauth2-token: 200
    synapse-synapse-1   | 2024-01-17 15:27:06,164 - synapse.http.client - 418 - INFO - GET-6 - Received response to GET https://demo.viecode.com/demoinstanz/index.php?open-id-user-information: 404
    • Offizieller Beitrag

    Ich kenn die Konfiguration deiner Testinstanz jetzt nicht, aber der OpenIDUserInformation Endpoint liefert 404 zurück, wenn kein Public Key hinterlegt ist. Es gibt hier auch eine entsprechende Anleitung: OpenID Connect Authentifizierung einrichten

  • Stimmt, das Schlüsselpaar habe ich vergessen. Danke für den Hinweis.

    Jetzt kriege ich auf dem Endpunkt ein 401.

    Meine Config in Matrix sieht folgerndermaßen aus

    Weiss grad nicht weiter, vielleicht mal ne Nacht drüber schlafen.

  • Okay heute morgen noch mal eine Testinstanz angelegt. Neuen Privaten und öffentlichen Schlüssel angelegt, sowie die Oauth Anwendung erstellt.

    Discovery musste ich abschalten, mit hängt sich die OIDC Implementierung von Matrix weg.

    Leider kriege ich nachdem ich Element versuche auf der Testinstanz freizugeben ein Invalid Token Fehler, danach krieg ich vom Open ID User Information Endpoint nur noch ne 401, wahrscheinlich weil versuch wird sich mit dem falschen Token anzumelden.

    Ich sehe aber auch keine Möglichkeit diesen Token zu löschen etc.

    • Offizieller Beitrag

    Ich kann dir hier leider keinen Support geben. Eine Installation, Konfiguration und tiefergehende Analyse einer Drittsoftware würde die Lizenzkosten um ein vielfaches überschreiten.

  • Ich bin mir wirklich nicht sicher ob die Probleme nicht mit der Demoinstanz, den URL Umschreibung etc. zusammenhängen. ggf. werden wir einfach mal eine Lizenz kaufen und schauen ob wir damit weiter kommen.

  • So nach knapp zwei Tagen rumprobieren habe ich es geschafft das ganze zum laufen zu bekommen.

    Knackpunkt war wohl das Synapse signierte ID Token erwartet, diese aber vom Plugin scheinbar nicht so geliefert werden.

    Nachdem ich die Prüfung in Synapse rausgepatched habe läuft die Authentifizierung durch.

    https://github.com/matrix-org/synapse/issues/9250

    Das ist die Issue auf Github dazu. Ist es möglich dieses Signing im Plugin einzufügen?