Buchempfehlung Spring Security

OnDemand

Top Contributor
Hallo zusammen,

kann mir jemand ein Buch empfehlen zum Thema Spring Security? Speziell interessiert mich Login mit angehangener Datenbank, User Roles (im Zusammenhang mit Vaadin).
In den Vaadin Tutorials ist immer nur die Rede von inMemory. Zwar gibt es noch ein einige Tutorials die das Thema mit der DB angehen, aber irgendwie fehlt mir da ein wenig der Hintergrund
 
Das liest sich ja interessant, da ist das usermanagement ausgelagert?
Angenommen mein Programm hat 20 Nutzer und jeder Nutzer kann wiederum 10 User haben die verschiedene Programmteile aufrufen können. Dann nützt das Programm nix oder?
 
Das liest sich ja interessant, da ist das usermanagement ausgelagert?
Richtig!

Angenommen mein Programm hat 20 Nutzer und jeder Nutzer kann wiederum 10 User haben die verschiedene Programmteile aufrufen können. Dann nützt das Programm nix oder?
Ich würde das schon als umsetzbar sehen. Keycloak ist sehr anpassbar. Das könnte man z.B. mit Rollen ggf. auch Gruppen abbilden. Man könnte auch für jeden User beliebige Attribute zuweisen und das damit steuern. Ich kenne selbst auch noch nicht alles, aber ich bin bisher sehr zufrieden. Du kannst Dir Keycloak mit Docker in >1 Min. installieren und ausprobieren, vorausgesetzt Du hast Docker bereits installiert.
 
Das versteh ich nicht so richtig.
Ich stell mir das so vor:

ich habe einen zentralen keycloak Server. Meine Software wird von verschiedenen Kunden benutzt, läuft also auf mehreren Servern irgendwo.

jeder Kunde kann sich wiederum verschiedene Mitarbeiter anlegen, welche Zugriff auf verschiedene Programmbereiche haben.

Geht das damit?
 
Das versteh ich nicht so richtig.
Ich stell mir das so vor:

ich habe einen zentralen keycloak Server. Meine Software wird von verschiedenen Kunden benutzt, läuft also auf mehreren Servern irgendwo.

jeder Kunde kann sich wiederum verschiedene Mitarbeiter anlegen, welche Zugriff auf verschiedene Programmbereiche haben.

Geht das damit?
Kurze Antwort, ja. Viele Wege führen aber nach Rom. Damit meine ich, man müsste sich halt noch Gedanken machen wie man das für Deinen Usecase am günstigsten umsetzt. Keycloak bietet eine API für alles, auch die Admin Sachen.

Für die Authentifizierung ist Keycloack sicher super, aber die Authorisierung muss ja meines Wissens trotzdem in der Software auch gemacht werden.
Ja klar. Genau so wie mit Spring Security ohne Keycloak.
Java:
@PostAuthorize("hasRole('ADMIN')")
oder
Java:
Authentication authenticationToken = SecurityContextHolder.getContext().getAuthentication();

Untestützung für Spring gibt es auch.

Java:
Authentication authenticationToken = SecurityContextHolder.getContext().getAuthentication();

if (authenticationToken instanceof KeycloakAuthenticationToken) {
    KeycloakPrincipal principal = (KeycloakPrincipal) authenticationToken.getPrincipal();
    ...
}
 
Also wenn die Software auf verschiedenen Servern läuft (also sozusagen für jeden Kunden ein Server), dann würde ich da ggf. auch die Administration trennen.

Ich hatte das Anliegen erst Richtung Mandantenfähigkeit verstanden, d.h. du hast einen Server aber diverse Mandanten mit jeweils mehreren User. Da muss man dann überlegen, was man wie benötigt. Das kann man sehr weit treiben. Ein Beispiel wäre z.B. Microsoft mit der Anmeldung. Da geht es so weit, dass nach Eingabe des Users erst einmal bestimmt wird, welche Anmeldung benutzt wird. Das kann bedeuten, dass die Mandanten also einen eigenen Identity Server hinterlegen können.

Generell bevorzuge ich eine klare Trennung bei Mandanten. Das geht aber oft nur bei kleiner Anzahl an Mandanten, aber gibt die größte Sicherheit. Es soll ja kein Mandant versehentlich falsche Daten zu sehen bekommen....
 
Denke auch, dass es sinnvoller ist zu trennen, sonst holt man sich wieder Abhängigkeiten rein.

also back to the question. Wo bekomm ich am besten Infos zu Spring Security? Sagen wir mal von Anfang an, authentifizieren, autorisieren; das volle Programm 😅
 
Denke auch, dass es sinnvoller ist zu trennen, sonst holt man sich wieder Abhängigkeiten rein.

also back to the question. Wo bekomm ich am besten Infos zu Spring Security? Sagen wir mal von Anfang an, authentifizieren, autorisieren; das volle Programm 😅

Das dürfte mit der beste Ort sein. Also einfach mal die original Doku durchgehen. Die Spring Dokumentation ist aus meiner Sicht sehr gut.
 
Die Administration kann man auch mit Keycloak trennen. Man könnte pro Mandant ein Realm oder sogar einen eigenen Keycloak Server vorsehen. Du wirst damit nicht eingeschränkt, wie Du das umsetzt ist vollkommen Dir überlassen. Du musst es einfach nur nicht selber machen und kannst Dich mehr oder weniger fast sofort auf die Business Logik stürzen.

Ich will Dir jetzt aber auch nichts aufschwatzen... :-D

Spring Security sollte man sich aber ohnehin ansehen.
 
Die Administration kann man auch mit Keycloak trennen. Man könnte pro Mandant ein Realm oder sogar einen eigenen Keycloak Server vorsehen. Du wirst damit nicht eingeschränkt, wie Du das umsetzt ist vollkommen Dir überlassen. Du musst es einfach nur nicht selber machen und kannst Dich mehr oder weniger fast sofort auf die Business Logik stürzen.

Ich will Dir jetzt aber auch nichts aufschwatzen... :-D

Spring Security sollte man sich aber ohnehin ansehen.
Die User-Administration sollte man aber ggf. eh immer getrennt halten und dabei auf offene Standards setzen. Dann ist es auch egal, woher dies später kommt. Man selbst kann auf Keycloak oder so setzen, aber wenn ein Kunde das einsetzen will, dann läuft es oft auf andere Identity Provider hinaus.

Daher Stimme ich hier @sascha-sphw voll und ganz zu. Zumal man dann diesen wichtigen Security Aspekt sauber abgetrennt hat - das ist halt extrem wichtig und das will zumindest ich als Entwickler nicht am Bein haben... (Security Audits können ganz schön nerven. Vor allem wenn diese von Kundenseite kommen. Kunde A fordert X aber Kunde B fordert das genaue Gegenteil ... Also da ist es immer gut, wenn man so einen Ball abgeben kann. Und bei offenen Standards ist es einem als Entwickler dann egal, was der Kunde wie einsetzt... Und man selbst ist bei Audits außen vor!

(Das mag aber alles uninteressant sein. Gerade wenn man für sich selbst Software baut, ist das egal.)
 

Zurück
Oben