[Epic] Auslagerung der SET Validierung als "common lib"
Warum?
Als Entwickler:Inn des Zustelldienstes und des Java SDKs möchte ich schemakonforme SETs als signierte JWTs erzeugen können. Die Erstellung und Validierung ist dabei für beide Systeme identisch, sodass eine gemeinsame genutzte Library von Vorteil wäre, um die Logik nicht nicht an mehreren Stellen pflegen zu müssen.
Relevante Links und Bemerkungen
Bereits exisierende Umsetzungen
- ZSD:
- Valdierung im MR-305
- SET-Validator Implementierung
- SDK:
- dev.fitko.fitconnect.core.validation.DefaultValidationService#validateSetEventSchema
- wird vom EventLogVerfier genutzt, der neben der Schemaprüfung, noch weitere Inhaltliche Prüfungen von Header und Claimsset durchführt
Gemeinsamkeiten beider Umsetzungen:
- SchemaProvider, der entscheidet gegen welche Schena-Version geprüft wird und das Schema bereitstelt
- ValdiationService der mittels
com.networknt.json-schema-validator
der die erzeugten JWT-Claims (Payload) gegen das Schema validiert
Möglichkeiten des Einsatz der Nimbus Bibliothek:
- JWSVerifier Interface - Dieses ist jedoch aus mehreen Gesichtspunkten ungenügend:
- es wird nur ein Boolean zurückgeliefert, ein Result Objekt um die aufgetretenen Fehler zu transportieren wäre hier besser
- die JOSEEException ist nur für Fehler beim Lesen des Payloads gedacht und würde sich nicht eignen um Validerungsfehler anzuzeigen
- JWTClaimsSetVerifier Interface:
- Payload Valdierung mit der Möglichkeit einen Kontext zu nutzen
- darüber hinaus eine BadJWTException
@Christoph_Metzger, @Jonas_Groeger : mein Vorschlag wäre ein Lib zu schaffen die eine SET-Validerung über das JWTClaimsSetVerifier Interface von Nimbus implementiert.
Offene Fragen:
- eigenständige stand-alone Lib (wie der JWK-Validator) ?
- Lib als Teil des JAVA-SDK (inneralb eines dedizierten Maven Moduls, z.B.. "common" oder "validation") `?
Akzeptanzkriterien
- Bereitstellung einer Java-Library die über Maven eingebunden werden kann
- Service(Interface) zum Laden und bereitstellen des SET-Schemas
- Service(Interface) zur Validierung des JWT Payloads
- ValidationResult um nachvollziehen zu können welche Fehler bei der Valdierung aufgetreten sind
-
Interface zur Registrierung von Custom Validations mit Zugriff auf SET-Inhalt:
validate(SET set, ...)
Durchführungsplan (von Entwickler:in bei Umsetzungsplanung auszufüllen)
- ...
- ...
- ...
- Definition of Done wurde geprüft