spring security pitfalls - gluehloch/java-examples GitHub Wiki
Zunächst ein paar Konzepte, Stichwörter im Zusammenhang mit Spring-Security. Hier geht es vor allem um Spring-Security im Web Umfeld.
Eine beispielhafte Umsetzung findet sich hier GitHub/Spring-Boot-Demo
- Authentifizierung (authentication): Login (User/Password). Hier in dem Beispiel erhält der Client nach erfolgreichem Login ein sogenanntes JWT (Jason-Web-Token). Dieses Token verwendet der Client in weiteren Anfragen zur Identifizierung an den (Web-)Server.
- Autorisierung (authorization): Prüfung, ob Anwender die passende Berechtigung für den Zugriff auf eine Resource besitzt.
- Servlet-Filter: Ein Konzept aus der Servlet API. Ein Filter entspricht vom Konzept her einem Proxy aus der objektorientierten Welt. Jede Server-Anfrage wird von einem Filter begutachtet. Dieser Filter kann z.B. Header-Parameter, Cookies oder andere HTTP-Request Informationen auslesen. Ggf. eine Anfrage beantworten oder umleiten. Hier sind zwei spezielle Filter interessant: Authentication- und Authorization-Filter.
- In Spring-Scurity wird von 'Roles' und 'Authorities' gesprochen. Eine 'Authority' bezieht sich auf eine Erlaubnis für eine Resource. Die 'Role' ist eine Gruppierung von 'Authorities'. In der Spring-Boot Demoanwendwendung gibt es eine N:M Beziehung zwischen den Entitäten User - Role - Privilege. Verschiedene Privilegien werden zu einer Rolle zusammen gefasst.
- OAuth (2.0) Konzept eines zentralen Login-Servers/Service. !!! TODO !!!
- Der Browser führt das Login durch.
- Der Browser erhält ein JWT. Dieses Token wird bei jeder Übertragung an den Server als Header Parameter mitgegeben.
- Falls das Token abgelaufen oder ungültig ist, wird man auf '/login' umgeleitet.
- spring-security-jwt
- Autorisierung abgelaufen? Empfohlenes Redirect auf '/login'.
- Zusammenspiel mit OAuth?
- Wie sieht das mit einer Single Page Application aus?
- Beispiel für oben: Angular IO und pure Javascript?
- Google Login / Facebook Login mit OAuth?
- Login und Refresh Token.
- Test einer REST API. Diese erscheinen mit kompliziert und schwer zu lesen.
- Auth0 Welche Rolle spielt dieses Tool und warum ist es teilweise kostenpflichtig?