|
| 1 | +# GSC327: TI-M on Matrix 1.15 |
| 2 | + |
| 3 | +TI-M basiert im aktuellen Release auf [Matrix 1.11], welches im Juni 2024 veröffentlicht wurde. |
| 4 | +Seitdem gab es vier weitere Matrix-Release. Um neue Features und Verbesserungen in TI-M nutzbar zu |
| 5 | +machen ist ein Update der Matrix Version in TI-M erforderlich. Dieses Proposal listet die für TI-M |
| 6 | +relevanten Matrix-Neuerungen auf und leitet, sofern notwendig, entsprechende Änderungen an der |
| 7 | +Spezifikation ab. |
| 8 | + |
| 9 | +## Änderungsvorschlag |
| 10 | + |
| 11 | +### `server_name` → `via` Migration |
| 12 | + |
| 13 | +Der `server_name` Query-Parameter auf [`/_matrix/client/v3/join/{roomIdOrAlias}`] and |
| 14 | +[`/_matrix/client/v3/knock/{roomIdOrAlias}`] wurde in [Matrix 1.12] als deprecated markiert und |
| 15 | +durch einen neuen Parameter `via` ersetzt. Server müssen dabei weiterhin beide Parameter akzeptieren |
| 16 | +aber `via` bevorzugen. |
| 17 | + |
| 18 | +> - Deprecate the `server_name` query parameter on `POST /_matrix/client/v3/join/{roomIdOrAlias}` |
| 19 | +> and `POST /_matrix/client/v3/knock/{roomIdOrAlias}`, as per [MSC4156]. ([\#1933]) |
| 20 | +> - Add `via` query parameter on `POST /_matrix/client/v3/join/{roomIdOrAlias}` and |
| 21 | +> `POST /_matrix/client/v3/knock/{roomIdOrAlias}`, as per [MSC4156]. ([\#1933]) |
| 22 | +
|
| 23 | +In [Matrix 1.14][Matrix 1.12] wurde der `server_name` Parameter dann gänzlich aus der Spec entfernt. |
| 24 | + |
| 25 | +> Remove `server_name` parameter from `/_matrix/client/v3/join/{roomIdOrAlias}` and |
| 26 | +> `/_matrix/client/v3/knock/{roomIdOrAlias}`, as per [MSC4213]. ([\#2059]) |
| 27 | +
|
| 28 | +Da es bereits TI-M Clients im Feld gibt und diese `via` nicht kennen, müssen TI-M Fachdienste |
| 29 | +`server_name` weiterhin als Fallback unterstützen. |
| 30 | + |
| 31 | +> **A_1 – Weitere Unterstützung von `server_name`** |
| 32 | +> |
| 33 | +> TI-M Fachdienste MÜSSEN bei den Requests `POST /_matrix/client/v3/join/{roomIdOrAlias}` und |
| 34 | +> `POST /_matrix/client/v3/knock/{roomIdOrAlias}` den Parameter `server_name` so wie in Matrix v1.12 |
| 35 | +> weiterhin unterstützen. **\[\<=\]** |
| 36 | +> |
| 37 | +> Hinweis: `server_name` wurde in Matrix v1.14 entfernt und durch den in Matrix v1.12 eingeführten |
| 38 | +> `via` Parameter ersetzt. Die Unterstützung von `server_name` nach Matrix v1.12 beinhaltet, dass |
| 39 | +> `via` serverseitig bevorzugt wird falls beide Parameter gesetzt sind. |
| 40 | +
|
| 41 | +Clients können über [`/_matrix/client/versions`] erkennen ob ihr Server `via` unterstützt und |
| 42 | +wahlweise `via` oder `server_name` verwenden. Alternativ können Clients auch einfach beide Parameter |
| 43 | +gleichzeitig und mit identischem Inhalt setzen. TI-M-seitig bedarf es hier keiner weiteren Regelung. |
| 44 | + |
| 45 | +### Einschränkung von Profilabfragen |
| 46 | + |
| 47 | +In [Matrix 1.12] wurde für Server die Möglichkeit eingeführt Profilabfragen einzuschränken. Abfragen |
| 48 | +müssen nur noch beantwortet werden wenn der anfragende und der angefragte Nutzer gemeinsame Räume |
| 49 | +haben oder wenn der angefragte Nutzer Mitglied eines öffentlichen Raumes ist. In allen anderen |
| 50 | +Fällen dürfen Server Anfragen mit 403 `M_FORBIDDEN` ablehen. |
| 51 | + |
| 52 | +> - Add 403 responses on `GET /_matrix/client/v3/profile/{userId}/avatar_url` and |
| 53 | +> `GET /_matrix/client/v3/profile/{userId}/displayname`, as per [MSC4170]. ([\#1867]) |
| 54 | +> - Add 403 response on `GET /_matrix/federation/v1/query/profile`, as per [MSC4170]. ([\#1867]) |
| 55 | +
|
| 56 | +Die Neuregelung der Fälle in denen Profilabfragen möglich sein müssen entspricht [A_26374] in TI-M |
| 57 | +Basis. Diese Anforderung kann daher entfallen. |
| 58 | + |
| 59 | +Weiterhin verbietet [A_26290] auf ePA-Fachdiensten Profilabfragen in allen anderen Fällen. Diese |
| 60 | +Anforderung ist bis auf den fehlenden Fehlercode konform mit der neuen Matrix-Spezifikation. Der |
| 61 | +Fehlercode wird daher in die Anforderung eingefügt. |
| 62 | + |
| 63 | +> **A_26290-1 - Verbot von Profilabfragen ohne gemeinsame Räume** |
| 64 | +> |
| 65 | +> Der TI-M Fachdienst ePA MUSS Requests zu den folgenden Endpunkten mit einer HTTP 403 Response *und |
| 66 | +> dem Fehlercode `M_FORBIDDEN`* ablehnen, sofern der anfragende Nutzer keine gemeinsamen Räume mit |
| 67 | +> dem angefragten Nutzer hat: |
| 68 | +> |
| 69 | +> - `GET /_matrix/client/v3/profile/{userId}` |
| 70 | +> - `GET /_matrix/client/v3/profile/{userId}/avatar_url` |
| 71 | +> - `GET /_matrix/client/v3/profile/{userId}/displayname` |
| 72 | +> |
| 73 | +> **\[\<=\]** |
| 74 | +
|
| 75 | +### `dont_notify` und `coalesce` Push Rule Actions |
| 76 | + |
| 77 | +In [Matrix 1.12] wurde klargestellt, dass die Push Rule Actions `dont_notify` und `coalesce` nicht |
| 78 | +abzulehnen sondern zu ignorieren sind. |
| 79 | + |
| 80 | +> - Clarify that the deprecated `dont_notify` and `coalesce` push rule actions MUST be ignored, not |
| 81 | +> rejected. ([\#1890]) |
| 82 | +
|
| 83 | +Da gegenteilige Implementierungen nicht bekannt sind gibt es für TI-M an dieser Stelle eigentlich |
| 84 | +nichts zu tun. Gleichzeitig fällt aber auf, dass mit [A_26193] die Verwendung dieser Actions für |
| 85 | +TI-M Clients explizit verboten wurde. Dies erscheint überflüssig, da diese Actions von jedem Server |
| 86 | +ignoriert werden und ohnehin nicht mehr Teil der Matrix-Spezifikation sind. [A_26193] wird daher |
| 87 | +entfernt. |
| 88 | + |
| 89 | +### OAuth 2.0 APIs |
| 90 | + |
| 91 | +In [Matrix 1.15] wurden neue OAuth APIs eingeführt. |
| 92 | + |
| 93 | +> Add the OAuth 2.0 based authentication API, as per [MSC3861] and its sub-proposals. ([\#2141], |
| 94 | +> [\#2148], [\#2149], [\#2150], [\#2151], [\#2159], [\#2164]) |
| 95 | +
|
| 96 | +Im Vergleich zu den von TI-M verwendeten Authentication APIs bieten die OAuth APIs den Vorteil, dass |
| 97 | +PKCE und State verpflichtend integriert sind. Des Weiteren erleichtert die Verwendung von OAuth die |
| 98 | +Nachnutzung bestehender Libraries. Nachteilig ist hingegen, dass die neuen APIs nicht mit der |
| 99 | +[User-Interactive Authentication] kompatibel sind. Konkret davon betroffen ist allerdings nur das |
| 100 | +Reset der Cross-Signing Keys, wofür es mit [MSC4312] einen Workaround gibt. |
| 101 | + |
| 102 | +In Summe überwiegen die Vorteile der neuen APIs. Neue TI-M Clients werden daher verpflichtet die |
| 103 | +OAuth APIs zu verwenden. |
| 104 | + |
| 105 | +> **A_2 – Verwendung der OAuth-APIs** |
| 106 | +> |
| 107 | +> TI-M Clients MÜSSEN sofern ihr Fachdienste Matrix 1.15 unterstützt die [OAuth APIs] zur |
| 108 | +> Authentifizierung nutzen. **\[\<=\]** |
| 109 | +
|
| 110 | +Da wir bereits Clients im Feld haben, die Matrix 1.15 nicht unterstützen müssen Fachdienste die |
| 111 | +Authentifizierung allerdings weiterhin auch über die alten APIs erlauben. |
| 112 | + |
| 113 | +> **A_3 – Authentication APIs** |
| 114 | +> |
| 115 | +> TI-M Fachdienste MÜSSEN die Authentifizierung sowohl über die [OAuth APIs] als auch über die |
| 116 | +> [Legacy APIs] erlauben. **\[\<=\]** |
| 117 | +
|
| 118 | +Weiterhin werden Clients und Fachdienste verpflichtet zum Reset der Cross-Signing Keys den |
| 119 | +Workaround aus [MSC4312] umzusetzen. |
| 120 | + |
| 121 | +> **A_4 – Cross-Signing-Reset & OAuth APIs** |
| 122 | +> |
| 123 | +> TI-M Clients und Fachdienste MÜSSEN zum Reset der Cross-Signing-Keys das Verfahren aus [MSC4312] |
| 124 | +> implementieren sofern die Authentifizierung über die [OAuth APIs] erfolgt ist. **\[\<=\]** |
| 125 | +
|
| 126 | +## Nennenswerte Änderungen ohne Anpassungen in TI-M |
| 127 | + |
| 128 | +### Raumversion 11 |
| 129 | + |
| 130 | +In [Matrix 1.14] wurde Raum Version 11 als neuer Standard festgelegt |
| 131 | + |
| 132 | +> Update the default room version to 11, as per [MSC4239]. ([\#2105]) |
| 133 | +
|
| 134 | +Für TI-M gelten wegen [Kapitel 5.4 in TI-M Basis] folgende Regeln: |
| 135 | + |
| 136 | +- Version 9, 10 und 11 müssen unterstützt werden |
| 137 | +- Version 10 muss als Default verwendet werden |
| 138 | +- Räume mit Version 11 dürfen nicht erzeugt werden |
| 139 | + |
| 140 | +Leider haben wir weiterhin Implementierungen aus der alten TI-M 1.x Linie im Feld. Diese basieren |
| 141 | +auf Matrix 1.3 und kennen Raumversion 11 nicht. Hier gibt es also vorerst keine Änderung. |
| 142 | + |
| 143 | +### Mark as unread |
| 144 | + |
| 145 | +Räume können seit [Matrix 1.12] explizit als ungelesen markiert werden. |
| 146 | + |
| 147 | +> - Add support for marking rooms as unread, as per [MSC2867]. ([\#1895], [\#1941]) |
| 148 | +
|
| 149 | +Dieses Feature ist Teil des Moduls [Receipts] und kann in TI-M ohne Einschränkung verwendet werden. |
| 150 | + |
| 151 | +## Sicherheit und Datenschutz |
| 152 | + |
| 153 | +Die Verwendung der neuen [OAuth APIs] erhöht durch PKCE die Sicherheit des Login-Verfahrens. |
| 154 | + |
| 155 | +## Kompatibilität & Migration |
| 156 | + |
| 157 | +Alle obigen Änderungen garantieren Kompatibilität zu bestehenden Implementierungen. |
| 158 | + |
| 159 | +## Alternativen |
| 160 | + |
| 161 | +Keine. |
| 162 | + |
| 163 | + [Matrix 1.11]: https://spec.matrix.org/v1.15/changelog/v1.11/ |
| 164 | + [`/_matrix/client/v3/join/{roomIdOrAlias}`]: https://spec.matrix.org/v1.15/client-server-api/#post_matrixclientv3joinroomidoralias |
| 165 | + [`/_matrix/client/v3/knock/{roomIdOrAlias}`]: https://spec.matrix.org/v1.15/client-server-api/#post_matrixclientv3knockroomidoralias |
| 166 | + [Matrix 1.12]: https://spec.matrix.org/v1.15/changelog/v1.12/ |
| 167 | + [MSC4156]: https://github.com/matrix-org/matrix-spec-proposals/pull/4156 |
| 168 | + [\#1933]: https://github.com/matrix-org/matrix-spec/issues/1933 |
| 169 | + [MSC4213]: https://github.com/matrix-org/matrix-spec-proposals/pull/4213 |
| 170 | + [\#2059]: https://github.com/matrix-org/matrix-spec/issues/2059 |
| 171 | + [`/_matrix/client/versions`]: https://spec.matrix.org/v1.15/client-server-api/#get_matrixclientversions |
| 172 | + [MSC4170]: https://github.com/matrix-org/matrix-spec-proposals/pull/4170 |
| 173 | + [\#1867]: https://github.com/matrix-org/matrix-spec/issues/1867 |
| 174 | + [A_26374]: https://gemspec.gematik.de/prereleases/Draft_TI-Messenger_24_3/gemSpec_TI-M_Basis_V1.1.0_CC/#A_26374 |
| 175 | + [A_26290]: https://gemspec.gematik.de/prereleases/Draft_TI-Messenger_24_3/gemSpec_TI-M_ePA_V1.1.0_CC/#A_26290 |
| 176 | + [\#1890]: https://github.com/matrix-org/matrix-spec/issues/1890 |
| 177 | + [A_26193]: https://gemspec.gematik.de/prereleases/Draft_TI-Messenger_24_3/gemSpec_TI-M_Basis_V1.1.0_CC/#A_26193 |
| 178 | + [Matrix 1.15]: https://spec.matrix.org/v1.15/changelog/v1.15/ |
| 179 | + [MSC3861]: https://github.com/matrix-org/matrix-spec-proposals/pull/3861 |
| 180 | + [\#2141]: https://github.com/matrix-org/matrix-spec/issues/2141 |
| 181 | + [\#2148]: https://github.com/matrix-org/matrix-spec/issues/2148 |
| 182 | + [\#2149]: https://github.com/matrix-org/matrix-spec/issues/2149 |
| 183 | + [\#2150]: https://github.com/matrix-org/matrix-spec/issues/2150 |
| 184 | + [\#2151]: https://github.com/matrix-org/matrix-spec/issues/2151 |
| 185 | + [\#2159]: https://github.com/matrix-org/matrix-spec/issues/2159 |
| 186 | + [\#2164]: https://github.com/matrix-org/matrix-spec/issues/2164 |
| 187 | + [User-Interactive Authentication]: https://spec.matrix.org/v1.15/client-server-api/#user-interactive-authentication-api |
| 188 | + [MSC4312]: https://github.com/matrix-org/matrix-spec-proposals/pull/4312 |
| 189 | + [OAuth APIs]: https://spec.matrix.org/v1.15/client-server-api/#oauth-20-api |
| 190 | + [Legacy APIs]: https://spec.matrix.org/v1.15/client-server-api/#legacy-api |
| 191 | + [Matrix 1.14]: https://spec.matrix.org/v1.15/changelog/v1.14/ |
| 192 | + [MSC4239]: https://github.com/matrix-org/matrix-spec-proposals/pull/4239 |
| 193 | + [\#2105]: https://github.com/matrix-org/matrix-spec/issues/2105 |
| 194 | + [Kapitel 5.4 in TI-M Basis]: https://gemspec.gematik.de/docs/gemSpec/gemSpec_TI-M_Basis/latest/#5.4 |
| 195 | + [MSC2867]: https://github.com/matrix-org/matrix-spec-proposals/pull/2867 |
| 196 | + [\#1895]: https://github.com/matrix-org/matrix-spec/issues/1895 |
| 197 | + [\#1941]: https://github.com/matrix-org/matrix-spec/issues/1941 |
| 198 | + [Receipts]: https://spec.matrix.org/v1.15/client-server-api/#receipts |
0 commit comments