Skip to content

spring security pitfalls

gluehloch edited this page Nov 10, 2022 · 9 revisions

Spring Security

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

Zentrale Begriffe:

  • 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 !!!

Workflow:

  • 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.

Zu Klären:

  • 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?

Links

Clone this wiki locally