Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Kommentierung 1.5.3] KOM-LE-A_2187-05 - Authentifizierung des KOM-LE-Teilnehmers über AUT-Zertifikat am AccountManager #44

Open
CLAM01 opened this issue May 12, 2023 · 16 comments

Comments

@CLAM01
Copy link

CLAM01 commented May 12, 2023

image

Kann der Satz "Zur Pflege der Basisdaten des Verzeichnisdienstes und..." kann m.E. endlich raus, da wir keine Basisdaten mehr pflegen.

@dhufnagel
Copy link
Contributor

Wie sieht es hierbei mit der Rückwärtskompatibilität aus? Kann ein CM mi 1.5 sich auch an einem Fachdienst mit 1.5.3 authentifizieren, wenn nur nbf gesetzt ist?

@CLAM01
Copy link
Author

CLAM01 commented May 12, 2023

Ein CM das nur nbf hat, sollte dann nicht mehr gehen. Der Fachdienst 1.5.3 kennt dann nbf nicht mehr.

@stophane
Copy link

stophane commented May 12, 2023

Hallo,

diese Änderung darf aus IOP-Gründen nicht erfolgen.
Allgemein bildet diese Änderung die herkömmliche Nutzung von period-validity JWT-Parametern ab, welche jedoch keinen sinnvollen Mehrwert in der aktuellen KIM-Abbildung + im Verhältnis zum IOP-Problem bietet.

Die bisherige Nutzung von nur "nbf" hat sogar den Vorteil, dass der KIM Fachdienst-Account-Manager, zentral verwaltet entscheiden kann, wie lang ein Token aus seiner Sicht gültig ist.

(!) Denn anders als im herkömmlichen Fall (Server stellt JWT aus), ist es in KIM der Client bzw. das KIM Clientmodul, welches das JWT erzeugt. Folglich würde so der Client selbst über die zeitliche Gültigkeit des Tokens entscheiden ("security" - nerver trust the client).

Um zu verhindern, dass Token "beliebig" lange Gültigkeiten "entwickeln" müsste der Account Manager trotzdem entsprechende Prüfung abbilden -> sodass der bisherige Ansatz bestehen bleiben kann und auch aus Sicht einer Clientmodul-Entwicklung eindeutiger ist. So ist klar erkennbar, dass das Clientmodul die zeitliche Gültigkeit nicht "selbst" festlegt.

Viele Grüße

@gem-cp
Copy link
Contributor

gem-cp commented May 16, 2023

Den Teil mit "Pflege der Basisdaten" werden wir entfernen.
Zu nbf: Wir brauchen Abwärtskompatibilität. Daher werden wir für den Fachdienst fordern, dass er das Alte Token und das neue Token unterstützen muss.

@dhufnagel
Copy link
Contributor

Ich würde dringend den Vorschlag von Herrn Stucke unterstützen. Es ist unüblich und sicherheitstechnische bedenklich, wenn der Client die Gültigkeitsdauer vorgibt.

@CLAM01
Copy link
Author

CLAM01 commented May 16, 2023

Das sollte dann aber auch irgendwo in der Spezifikation festgehalten werden als Nebensatz / ergänzende Info unter der Afo.

@CLAM01
Copy link
Author

CLAM01 commented May 16, 2023

Die Gültigkeitsdauer ist doch auf 6 Stunden begrenzt laut Afo oder?

image

Damit dieser Faden nicht gekapert wird, würde ich empfehlen, einen eigenen Faden zu eröffnen.
Aber auch ich gebe Herrn Stucke recht, es ist besser wenn der FD entscheidet wie lange der JWT gültig ist.
Das nbf gibt dabei nur an, ab wann der JWT gültig ist.

@gem-cp
Copy link
Contributor

gem-cp commented May 16, 2023

OK. Danke für das Feedback. Wir werden die Änderung am Token zurücknehmen. Das Token bleibt so wie bisher in 1.5.2.

@Amarteau
Copy link
Contributor

Wird die Gültigkeit des Tokens trotzdem allgemein über die Spezifikation definiert werden?
Oder anders gefragt, woher weiß das Clientmodul ob ein vorhandener JWT noch gültig ist oder ein neuer JWT erzeugt werden muss?

@stophane
Copy link

Wird die Gültigkeit des Tokens trotzdem allgemein über die Spezifikation definiert werden? Oder anders gefragt, woher weiß das Clientmodul ob ein vorhandener JWT noch gültig ist oder ein neuer JWT erzeugt werden muss?

Implizit übertragen auf JWT, sagt gemSpec_FD_KOMLE dazu folgendes aus:
image

Somit muss eine authentifizierte Session im Kontext des Tokens min. 5 min gültig sein.

In jedem anderen Fall erhält das Clientmodul in diesem Kontext als response auf eine request den Statuscode 401 zurück, was wiederrum, bei Auftreten nach erfolgreicher Authentifizierung, i.d.R. das Überschreiten dieser Zeitspanne impliziert. Es können auch andere Ursachen/Abhängigkeiten zu dieser response führen, wobei dies unerheblich ist, da der Server den Client ablehnt und dieser jederzeit mit erneuerten Authentifizierungsinformationen requests wiederholen kann.

@Amarteau
Copy link
Contributor

Amarteau commented May 22, 2023

Ja, aber die 5 Minuten sind ja nur der empfohlene Standardwert laut Tab_Konfig_Parameter. Ein Fachdienst könnte den Wert ja auch auf 2 Minuten konfigurieren.
Aus IOP Sicht würde ich es begrüßen, wenn es eine allgemeine Festlegung gibt oder man den Wert analog der Passwortpolicy vom Fachdienst abfragen kann.

@gem-cp
Copy link
Contributor

gem-cp commented May 22, 2023

Wir können die Gültigkeitsdauer des Tokens über ServiceInformation.yaml abfragbar machen. Gibt es Gegenstimmen?

@stophane
Copy link

Ja, aber die 5 Minuten sind ja nur der empfohlene Standardwert laut Tab_Konfig_Parameter. Ein Fachdienst könnte den Wert ja auch auf 2 Minuten konfigurieren. Aus IOP Sicht würde ich es begrüßen, wenn es eine allgemeine Festlegung gibt oder man den Wert analog der Passwortpolicy vom Fachdienst abfragen kann.

Der Abruf eines Parameters "SessionExpirationPeriod" (o.ä.) aus ServiceInformation wäre ein geeigneter Ansatz. So hätte der Client des Account-Managers einen Anhaltspunkt über die zeitliche Gültigkeit seines Tokens.

@Amarteau Könnten Sie dies als feature request PR vorschlagen?! (-:

@Amarteau
Copy link
Contributor

Ja, kann ich machen.

@Amarteau
Copy link
Contributor

Amarteau commented Jun 2, 2023

#54

@gem-cp
Copy link
Contributor

gem-cp commented Jun 6, 2023

Danke, werden wir übernehmen; minimum wird auf 300 geändert.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants