[Epic] Aufheben Limit Destinations
Why
Aktuell ist die Anzahl der Destinations, welche von einem Client / Owner verwaltet werden können aufgrund der Beschränkungen im Header des Token übergebenen OAuth Scopes limitiert. Dies gilt sowohl für die Self-Service API als auch für das Self-Service Portal.
FIT-Connect soll weiterhin kontinuierlich wachsen und besonders für Großanbindende ist die Aufhebung dieser Limitierung von besonderer Bedeutung - hier haben wir bisher aus den Nutzungsprojekten den Wunsch erhalten bis zu 5000 Destinationen unterstützen zu können, siehe auch #1230 (comment 123147).
Goal
Ein Owner soll zukünftig in der Lage sein, über einen API-Client bis zu 5000 Destinations verwalten zu können.
Links, Notes, Remarks
(Click to expand): Flowcharts
sequenceDiagram
autonumber
participant CL as API-Client
participant ZSD as Submission API
participant SSP as Self-Service API
CL ->>+ ZSD: Get all Submissions for pickup
note right of CL: HTTP GET /v1/submissions<br>Auth: …/subscribe:destination
ZSD ->>+ SSP: Get Destination IDs for API-Client<br>(client_id)
note right of ZSD: HTTP GET /internal/destination-permissions<br>Auth: <use_api_client_token>
SSP -->>- ZSD: List of Destination IDs
note over SSP, ZSD: ["<uuid1>", "<uuid2>", …, "<uuid5000>"]
ZSD -->>- CL: List of Submissions for pickup<br>(from API-Clients' Destinations)
(Click to expand): Migration der Scopes in der Tokenausstellung und in der Prüfung der Scopes im Zustelldienst
- (Aktuell) Client ->
/token
-> Token mitmanage:destination:<id>
-> Token-Validator -> Zustelldienst - Client ->
/token
-> Token mitmanage:destination:<id> https://schema.fitko.de/fit-connect/oauth/scopes/submission-api/manage:destination
-> Token-Validator -> Zustelldienst (verwerfen der zusätzlichen langen Berechtigung) - Client ->
/token
-> Token mitmanage:destination:<id> https://schema.fitko.de/fit-connect/oauth/scopes/submission-api/manage:destination
-> Token-Validator -> Zustelldienst (lesen der zusätzlichen langen Berechtigung und Abrufen des /token/introspect Endpunkts für diesen) -> OAuth-Server Antwort mithttps://schema.fitko.de/fit-connect/oauth/scopes/submission-api/manage:destination:<id>
. Muss zur Liste der Berechtigungen hinzugefügt werden. - Prüfung im Zustelldienst anpassen: Nur noch lange Scopes prüfen:
https://schema.fitko.de/fit-connect/oauth/scopes/submission-api/manage:destination:<id>
. Hier müssen alle Scopes in Tests / Test Tokens angepasst werden. - Einführung eines Test Doubles (z.B. ein Mock) um im Test keine signierten Tokens verwenden zu müssen.
- Entfernen der Token-Validator Middleware, da Zustelldienst die Signatur der Tokens über den
/token/introspect
prüft. - (Ziel) Client ->
/token
-> Token mithttps://schema.fitko.de/fit-connect/oauth/scopes/submission-api/manage:destination
-> Zustelldienst ->/token/introspect
->https://schema.fitko.de/fit-connect/oauth/scopes/submission-api/manage:destination:<id>
(Click to expand): Sonstige Anmerkungen
- Das Limit müssen wir einführen, da das BSI beim Pentest das System mit Destinations geflutet hat und es zu Störungen kam. Da wir vorerst nur ein globales Limit festlegen können, werden wir es so hoch festlegen wie notwendig, aber nicht höher. Eine Erhöhung ist auch auf dem Produktivsystem innerhalb von wenigen Tagen möglich.
- Teams-Diskussionen:
- https://teams.microsoft.com/l/message/19:789ce036232e4ac78587d369f10f4edf@thread.tacv2/1689253209814?tenantId=7030c8e1-cbee-4c02-b830-5e125ef65978&groupId=17f45aa2-4261-48d2-845f-afd6cf3a2b97&parentMessageId=1689253209814&teamName=FIT-Connect&channelName=Operations&createdTime=1689253209814&allowXTenantAccess=false
- https://teams.microsoft.com/l/message/19:789ce036232e4ac78587d369f10f4edf@thread.tacv2/1691142645705?tenantId=7030c8e1-cbee-4c02-b830-5e125ef65978&groupId=17f45aa2-4261-48d2-845f-afd6cf3a2b97&parentMessageId=1691142645705&teamName=FIT-Connect&channelName=Operations&createdTime=1691142645705&allowXTenantAccess=false
- Daneben ist die Größe des OAuth-Tokens wichtig --> KIV cached den Token sodass es hier keine hohe Anfrage bei FIT-Connect geben sollte (hier sind die HTTP-Header zu beachten) (geschlossenes Vorgänger Bug-Issue: https://git.fitko.de/fit-connect/planning/-/issues/1195)
- Vorschlag zum Vorgehen: #1278 (comment 101878)
Stories
- Story 1 (Endpunkt SSP Backend)
- Story 2 (Call aus dem Zustelldienst --> SSP)
- Story 3 (Dokumentation) - [Team Doku]
- Story 4 (SSP Frontend fit machen für 5k Destinations) - [Team SSP]
Acceptance criteria
-
5.000 Destinations pro Owner sind zu nutzenUpdate 23.4 - keine Einschränkungen auf der Owner Ebene -
5.000 Destinations pro Client sind zu nutzen - falls Performanceprobleme bei irgendwelchen Endpunkten erwartet werden, reduzieren wir diesen Wert (z.B. Polling der Submissions fragt alle destinationen des Clients ab)
-
Per Config sind initial 1000 Destinations pro Owner und10005000 Destinations pro Client auf allen Umgebung einzurichten (das soll bei Bedarf über die Configbis auf 5000/5000nach einer weiteren Prüfung angehoben werden können) (Update 23.04) -
Durch die Umstellung wird die Performance des Gesamtsystems nicht beeinträchtigt -
Durch die Umstellung wird die Sicherheit des Gesamtsystems nicht beeinträchtigt -
Umstellung auf die neuen Scopes ist in der Submission API implementiert -
Umstellung auf die neuen Scopes ist in der Self-Service API implementiert -
SSP funktioniert auch mit der größeren Anzahl möglicher Destinations unverändert -
Implementierung ist nicht mit einem breaking change verbunden -
Definition of Done was checked.
Follow-Ups
- Nach Abschluss dieser Entwicklung wird die Übernahme der SSP durch das Team Zustelldienst umgesetzt #1278
- Limits des Owners (oder des Berechtigten) sind nach Abschluss der Teamfunktionalität zu überprüfen #330 (closed)
Edited by Wojciech Gdaniec