Aktualisierter Schlüssel nicht hinterlegt
Zusammenfassung
Werden die Schlüssel über das Self-Service-Portal ausgetauscht, ist der neue Schlüssel danach nicht über die API abrufbar.
Die Endpunkte
PUT /v1/destinations/{destinationId}
(Zustellpunkt vollständig aktualisieren)
und
PATCH /v1/destinations/{destinationId}
(Zustellpunkt partiell aktualisieren)
sehen nur ein Update der encryptionKid
vor, nicht jedoch die Übermittlung der neuen Schlüssel.
Ressourcen
Schritte zum Reproduzieren
- Zustellpunkt inkl. Schlüssel anlegen
- Zustellpunkt und Schlüssel über die API abrufen
- Zustellpunkt bearbeiten, Schlüssel austauschen
- Zustellpunkt und Schlüssel über die API abrufen -> Schlüssel ist nicht abrufbar
Wie verhält sich der aktuelle Fehler?
Der ausgetauschte Schlüssel ist über die API nicht abrufbar.
Was ist das erwartete richtige Verhalten?
Der ausgetauschte Schlüssel ist über die API abrufbar.
Relevante Protokolle/Screenshots/Anfragen
Zustellpunkt abfragen
Der Zustellpunkt 17d2b3cb-ba20-4283-84f9-0434fc08f771
verwendet den Schlüssel cfb5ef62-d550-409a-bd38-f70f55a8570d
GET /v1/destinations/17d2b3cb-ba20-4283-84f9-0434fc08f771 HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Authorization: Bearer eyJraWQiOiJHb2JOIiwidHlwIjoiYXQrand0IiwiYWxnIjoiRWREU0EifQ.eyJzdWIiOiI3MWJjOGE0YS05Y2ZiLTQ3ZDUtYjE4NC02OWY2ODI5ZDFlZWUiLCJhdWQiOiJodHRwczpcL1wvc3VibWlzc2lvbi1hcGktdGVzdGluZy5maXQtY29ubmVjdC5maXRrby5kZXYiLCJzY29wZSI6InNlbmQ6cmVnaW9uOkRFIiwiaXNzIjoiaHR0cHM6XC9cL2F1dGgtdGVzdGluZy5maXQtY29ubmVjdC5maXRrby5kZXYiLCJleHAiOjE2MzY3MTgwODcsImlhdCI6MTYzNjcxNjI4NywianRpIjoiQ0J5MWVYT1lNem8iLCJjbGllbnRfaWQiOiI3MWJjOGE0YS05Y2ZiLTQ3ZDUtYjE4NC02OWY2ODI5ZDFlZWUifQ.Ctqn2G9f3-8xyEqeSwlVHXyb1aB4Vr1rdl5qtu1Qmm-J4tE-6DhobLWATdZ9q7pqvr5r8CrHsPackuinXa3wAw
Connection: keep-alive
Host: submission-api-testing.fit-connect.fitko.dev
User-Agent: HTTPie/2.6.0
HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: application/json;charset=UTF-8
Date: Fri, 12 Nov 2021 11:24:47 GMT
Strict-Transport-Security: max-age=63072000
Transfer-Encoding: chunked
Vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-Xss-Protection: 1; mode=block
{
"destinationId": "17d2b3cb-ba20-4283-84f9-0434fc08f771",
"encryptionKid": "cfb5ef62-d550-409a-bd38-f70f55a8570d",
"metadataVersions": [
"1.0.0"
],
"replyChannels": null,
"services": [
{
"identifier": "urn:foo:bar",
"regions": [
"DE"
],
"submissionSchemas": [
{
"mimeType": "application/json",
"schemaUri": "urn:foo:bar"
}
]
}
],
"status": "created"
}
Schlüssel abholen
Der Schlüssel kann abgerufen werden.
GET /v1/destinations/17d2b3cb-ba20-4283-84f9-0434fc08f771/keys/cfb5ef62-d550-409a-bd38-f70f55a8570d HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Authorization: Bearer eyJraWQiOiJHb2JOIiwidHlwIjoiYXQrand0IiwiYWxnIjoiRWREU0EifQ.eyJzdWIiOiI3MWJjOGE0YS05Y2ZiLTQ3ZDUtYjE4NC02OWY2ODI5ZDFlZWUiLCJhdWQiOiJodHRwczpcL1wvc3VibWlzc2lvbi1hcGktdGVzdGluZy5maXQtY29ubmVjdC5maXRrby5kZXYiLCJzY29wZSI6InNlbmQ6cmVnaW9uOkRFIiwiaXNzIjoiaHR0cHM6XC9cL2F1dGgtdGVzdGluZy5maXQtY29ubmVjdC5maXRrby5kZXYiLCJleHAiOjE2MzY3MTgyMzgsImlhdCI6MTYzNjcxNjQzOCwianRpIjoiLVQycXktTEJZVkkiLCJjbGllbnRfaWQiOiI3MWJjOGE0YS05Y2ZiLTQ3ZDUtYjE4NC02OWY2ODI5ZDFlZWUifQ.usF2YkB-UaGh1_I4csbYWdhjPriFxrEiKLKFfMxoqIzi1E3zVBmUzkNVeQ6f4Pfnn9Fs1F8D76ZhYkTVaap7Dg
Connection: keep-alive
Host: submission-api-testing.fit-connect.fitko.dev
User-Agent: HTTPie/2.6.0
HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Content-Type: application/json;charset=UTF-8
Date: Fri, 12 Nov 2021 11:27:18 GMT
Expires: 0
Pragma: no-cache
Strict-Transport-Security: max-age=63072000
Transfer-Encoding: chunked
Vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-Xss-Protection: 1; mode=block
{
"alg": "RSA-OAEP-256",
"e": "AQAB",
"key_ops": [
"wrapKey"
],
"kid": "cfb5ef62-d550-409a-bd38-f70f55a8570d",
"kty": "RSA",
"n": "lsdHKS0-nKqvt6-3CvjtAgMrC5J5-poHXkYPx9H9Je9vJVC_8G7JZno8ms7fMqL5A08H5_2lduROcPMq-OnNk3BbR9LNj0E1g05BOJVe98k039DgRvxmblxKsj9jJPInbTgTxjJqOt0dtTKUgvQvw8kCo7C2LBgNHV1jHbd-urua-8J8kHbu8qacpC7Fsj2kGVqYXH0z4DzLMF42MfhRUhzdhMP1m6pmTxtZs6vrBZVNRwDfHUniL0DXnYHV3mEft8xFuxIwFvHdI3V32HpFPi0UkcBq1oQ6DXnVK6iQm29Ht99flc2snPLZs26UivohBwvkl9nnwWSddQNvZaRX_dM_K3DNk1eck4WSGYlIJU-nlG5xe_I8QBMK_OHqI6OxSeDuA2yygPZCV6F5OLFEbBF7N8MLX0-yiHKx19I60kXt66XIIFEjuvO7izNnweb0LCdJqGWkGrtFs6Rp2h03wXkbZ-pqCk2n54_zUx8DUhEpNeXABjI2xxeKqY8w7Or1Etqxa__tyrtKb7I86vVKk5Yucov5Gw8gwT7eVmD374S_wkKZ_b9gHM3tIxocQzEYujO6phXekwt0nqrrmdNx_7o6pxSC1TfucNytxQkRzvy8PYzxduEHkoQ0z96hGgV00LJQfVpGHsQ_WL-qGcH_mVVL391miaMU6ydItB5Z0ek",
"x5c": [
"no chain"
]
}
Schlüssel austauschen
Der Schlüssel wird über das Self-Service-Portal ausgetauscht.
Zustellpunkt erneut abfragen
Wird der Zustellpunkt erneut abgefragt, enthält er jetzt den Schlüssel 39194d4e-85b8-4dca-a7a1-ca5bc7fbb013
.
GET /v1/destinations/17d2b3cb-ba20-4283-84f9-0434fc08f771 HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Authorization: Bearer eyJraWQiOiJHb2JOIiwidHlwIjoiYXQrand0IiwiYWxnIjoiRWREU0EifQ.eyJzdWIiOiI3MWJjOGE0YS05Y2ZiLTQ3ZDUtYjE4NC02OWY2ODI5ZDFlZWUiLCJhdWQiOiJodHRwczpcL1wvc3VibWlzc2lvbi1hcGktdGVzdGluZy5maXQtY29ubmVjdC5maXRrby5kZXYiLCJzY29wZSI6InNlbmQ6cmVnaW9uOkRFIiwiaXNzIjoiaHR0cHM6XC9cL2F1dGgtdGVzdGluZy5maXQtY29ubmVjdC5maXRrby5kZXYiLCJleHAiOjE2MzY3MTgzNzcsImlhdCI6MTYzNjcxNjU3NywianRpIjoiT3pmQUlMenlqOVUiLCJjbGllbnRfaWQiOiI3MWJjOGE0YS05Y2ZiLTQ3ZDUtYjE4NC02OWY2ODI5ZDFlZWUifQ.emhjrrWIVxYOwy8Qhe5_WZiyZeVj73sX21k_010oWbT-trwMAqtrz98NLeZTetqkvZIMSV09rovjEsDYgVlgDQ
Connection: keep-alive
Host: submission-api-testing.fit-connect.fitko.dev
User-Agent: HTTPie/2.6.0
HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: application/json;charset=UTF-8
Date: Fri, 12 Nov 2021 11:29:38 GMT
Strict-Transport-Security: max-age=63072000
Transfer-Encoding: chunked
Vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-Xss-Protection: 1; mode=block
{
"destinationId": "17d2b3cb-ba20-4283-84f9-0434fc08f771",
"encryptionKid": "39194d4e-85b8-4dca-a7a1-ca5bc7fbb013",
"metadataVersions": [
"1.0.0"
],
"replyChannels": null,
"services": [
{
"identifier": "urn:foo:bar",
"regions": [
"DE"
],
"submissionSchemas": [
{
"mimeType": "application/json",
"schemaUri": "urn:foo:bar"
}
]
}
],
"status": "created"
}
Neuer Schlüssel kann nicht abgefragt werden
Es kommt der Fehler public-key-not-found
.
GET /v1/destinations/17d2b3cb-ba20-4283-84f9-0434fc08f771/keys/39194d4e-85b8-4dca-a7a1-ca5bc7fbb013 HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Authorization: Bearer eyJraWQiOiJHb2JOIiwidHlwIjoiYXQrand0IiwiYWxnIjoiRWREU0EifQ.eyJzdWIiOiI3MWJjOGE0YS05Y2ZiLTQ3ZDUtYjE4NC02OWY2ODI5ZDFlZWUiLCJhdWQiOiJodHRwczpcL1wvc3VibWlzc2lvbi1hcGktdGVzdGluZy5maXQtY29ubmVjdC5maXRrby5kZXYiLCJzY29wZSI6InNlbmQ6cmVnaW9uOkRFIiwiaXNzIjoiaHR0cHM6XC9cL2F1dGgtdGVzdGluZy5maXQtY29ubmVjdC5maXRrby5kZXYiLCJleHAiOjE2MzY3MTg0NDMsImlhdCI6MTYzNjcxNjY0MywianRpIjoiNUF4MGM2c0lxdXMiLCJjbGllbnRfaWQiOiI3MWJjOGE0YS05Y2ZiLTQ3ZDUtYjE4NC02OWY2ODI5ZDFlZWUifQ.8TDqEWqNH4gw_gmuLi0cEF9qLzcCs1yYh-Xw8C4YWCnU6r6Q4IZxSMtQwHK56mziee7DYoRrl7_8U3lQilVwCQ
Connection: keep-alive
Host: submission-api-testing.fit-connect.fitko.dev
User-Agent: HTTPie/2.6.0
HTTP/1.1 404 Not Found
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Content-Type: application/json;charset=UTF-8
Date: Fri, 12 Nov 2021 11:30:43 GMT
Expires: 0
Pragma: no-cache
Strict-Transport-Security: max-age=63072000
Transfer-Encoding: chunked
Vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-Xss-Protection: 1; mode=block
{
"detail": "No public key with kid=39194d4e-85b8-4dca-a7a1-ca5bc7fbb013",
"status": 404,
"title": "Public key not found",
"type": "https://schema.fitko.de/fit-connect/submission-api/problems/public-key-not-found"
}
Akzeptanzkriterien
Folgendes ist zu tun:
-
Das Self-Service-Portal muss die Schlüssel per POST /v1/destinations/{destinationId}/keys
hochladen -
Der Zustelldienst darf nur dann die encryptionKid
aktualisieren, wenn ein entsprechender Schlüssel vorliegt
Durchführungsplan
-
Zustelldienst Api anpassen (https://git.fitko.de/fit-connect/zustelldienst/-/merge_requests/69) -
Zustelldienst Api Tests anpassen (https://git.fitko.de/fit-connect/zustelldienst-api-tests/-/merge_requests/38) -
SSP Zustelldienst Api Nutzung anpassen (Key Update, Fehlerhandling) https://git.fitko.de/fit-connect/self-service-portal/-/merge_requests/37 -
Zustelldienst Docu Änderungen für neue Zustelldienst Api Fehlercodes machen (docs!146 (merged)) -
Änderungen auf DEV ausrollen (https://git.fitko.de/fit-connect/infrastruktur/-/merge_requests/71) -
Changelog vorbereiten (docs!145 (merged))