Wir könnten das ganze sogar noch ein Stück weit einschränken und hier noch auftrennen zwischen Public Keys für die Verschlüsselung (alg=RSA-OEAP-256, keyops=["wrapKey"]) und Public Keys für die Signaturprüfung (alg=PS512, keyops=["verify"])
if((isVerify&&isWrapKey)||(!isVerify&&!isWrapkey)){thrownewJwkNotValidException("key_ops parameter must be set to either 'verify' or 'wrapKey'");}if(apiJWK.getE().getValue()!="AQAB"){thrownewJwkNotValidException("RSA-Exponent (parameter e) must be set to 'AQAB'");}if(apiJWK..getKty().getValue()!="RSA"){thrownewJwkNotValidException("Key type (kty) must be set to ''RSA'");}
Bitte zusätzlich auch irgendwo prüfen, dass alle required-Attribute tatsächlich gesetzt sind.
{ "issue": "If key is used for verification, please use PS512.", "detail": "You are trying to send an invalid JWK. Make sure it conforms to these constraints: kty=RSA, e=AQAB, key_ops/alg=verify/PS512 or wrapKey/RSA-OAEP-256", "type": "https://fitko.uber.space/problem/jwk-not-valid", "title": "JWK not valid", "status": 422}
Mir ging es nicht um die eigentliche Prüfung der Vorgaben aus der API-Spec im Zustelldienst, sondern um Unit-Tests, die die Zustelldienst-Implementierung prüfen.
Aktuell werden Deserialisierungprobleme die aus der API ersichtlich sind mit message-not-readable quittiert. Wenn das customizable sein soll müssen wir weg vom generierten Code aus der API-Spec. Anders ist das nicht möglich. Ich stimme zu dass es noch aussagekräftiger sein kann. Das kommt aber mit höherem manuellen Aufwand in der Codegenerierung (bzw. eben der nicht-Codegenerierung). Machen oder nicht machen?
Korrekt, wird aber durch die Codegenerierung geprüft.
Korrekt, wird aber durch die Codegenerierung geprüft. Ich sehe aber ein dass man hier einen IT schreiben sollte. Kommt.
Ich denke, ein eigener Fehlercode für ungültig JWKs hätte einen echten Mehrwert für Konsument:innen der API. Macht das debugging ungemein einfacher. Den zusätzlichen manuellen Aufwand sollten wir denke ich hinnehmen. Wir können gerne anfang nächster Woche nochmal darüber sprechen, welche konkreten Aufwände das bedeutet.
Dennoch bitte Tests ergänzen.
, bitte ergänzen :)
Er kann aber dennoch von API-Clients falsch gesetzt werden. Können wir aber auch gerne in FCON-136 behandeln.
Test für alg-RS512, Test für alg=RSA-OAEP. Bitte noch ergänzen :)
Ack. Ich denke wir brauchen hier einfach eine Story für bessere Fehlermeldungen.
Done
Done
Mag sein, aber übermittelt wird der in der API aber nicht. Daher sehen wir den nie.
Ich dachte wir erlauben nur alg=RSA-OAEP-256 und nicht alg=RSA-OAEP? Der Wert ist damit gar nicht in der API vorgesehen. Das Problem ist aber das gleiche wie bei 1.
Wir stoßen hier halt an die Grenzen was mit generiertem Code machbar ist und müssen entscheiden ob jetzt der richtige Zeitpunkt ist die Fehlermeldungen zu verfeinern oder andere Themen anzugehen. Vorteil am agilen Vorgehen: Wir können das jetzt auch tun
Gemäß dem aktuellsten Kommentar von @Jonas_Groeger es umgesetzt, aber mir ist noch nicht 100% klar, ob es eine vollständige Testabdeckung impliziert. (Ich gehe aber stark davon aus)
Kann geschlossen werden, wenn das Systemverhalten mit API-Tests nachgewiesen ist.
changed title from Notwendinge Attribute des JWK auf required setzen to Notwendinge Attribute des JWK auf required setzen{+ (https://jira.fjd.de/browse/FCON-7)+}
changed title from Notwendinge Attribute des JWK auf required setzen{- (https://jira.fjd.de/browse/FCON-7)-} to Notwendinge Attribute des JWK auf required setzen