Was ist das Problem bei Autorisierung und Authentifizierung in Microserviceumgebungen und wie können JSON Web Tokens dabei helfen? Dies beleuchtet Bernd Schönbach in seiner Präsentation vom Bonn Agile Meetup.
2. Überblick
2Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
• Was ist das Problem?
• Und wie helfen uns jetzt JSON Web Tokens dabei?
• Was sind denn jetzt eigentlich diese Tokens?
• Beispiele
• Mind the gap
• JWS vs. JWE
• Kritische Betrachtung
9. Typischer Auth Flow
9Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
UI
Auth Service
Microservice 2
Microservice 1
Microservice 3
Login
OAuth
Token
Rückgabe
Requests
mit Token
10. Typischer Auth Flow
10Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
UI
Auth Service
Microservice 2
Microservice 1
Microservice 3
Login
OAuth
Token
Rückgabe
Prüfe
Oauth Validität
Requests
mit Token
11. Typischer Auth Flow
11Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
UI
Auth Service
Microservice 2
Microservice 1
Microservice 3
Login
OAuth
Token
Rückgabe
Prüfe
Oauth Validität
Requests
mit Token
AuthService
12. Und jetzt mit JWT
12Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
UI
Auth Service
Microservice 2
Microservice 1
Microservice 3
Login
JWT
wird
zurückgegebenSende Requests
mit Token
13. Und jetzt mit JWT
13Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
UI
Auth Service
Microservice 2
Microservice 1
Microservice 3
Login
JWT
wird
zurückgegeben
Prüfe
Token
Sende Requests
mit Token
14. Und jetzt mit JWT
14Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
UI
Auth Service
Microservice 2
Microservice 1
Microservice 3
Login
JWT
wird
zurückgegeben
Prüfe
Token
Sende Requests
mit Token
16. Was sind JSON Web Tokens (JWT)?
16Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
RFC
7519:
“JSON
Web
Token
(JWT)
is
a
compact,
URL-‐safe
means
of
representing
claims
to
be
transferred
between
two
parties.”
17. Was sind JSON Web Tokens (JWT)?
17Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
18. Was sind JSON Web Tokens (JWT)?
18Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
Zwei Varianten
JSON Web Signature JSON Web Encryption
19. JSON Web Signature (RFC 7515)
19Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
Drei
Bestandteile
1. Header
2. Payload
(Claims)
3. Signatur
31. JSON Web Encryption (JWE)
31Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
• Der Nutzer kann die Daten nicht lesen
• Man kann potentiell geheime Informationen verschicken
Pros
Cons
• Daten liegen beim Nutzer
• Theoretisch unendlich viel Zeit zum Knacken der Encryption
• Potentiell geheime Informationen werden verschickt
• Erzeugt Gefühl von Sicherheit beim Entwickler
32. JSON Web Signature (JWS)
32Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
• Alles ist lesbar durch den Nutzer
• Entwickler werden zur Datensparsamkeit “erzogen”
• Debugging ist einfach möglich
Pros
Cons
• Alles ist lesbar durch den Nutzer
• Mögliche Informationen können nicht verschickt werden
34. Shared Secret Verfahren
34Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
Auth Service
Microservice 2
Microservice 1
Microservice 3
Private Key
35. Shared Secret Verfahren
35Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
Auth Service
Microservice 2
Microservice 1
Microservice 3
Private Key
36. Auth Service
Private/Public Key Verfahren
36Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
Microservice 2
Microservice 1
Microservice 3
Private Key
Public Key
37. Auth Service
Private/Public Key Verfahren
37Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
Microservice 2
Microservice 1
Microservice 3
Private Key
Public Key
38. Auth Service
Private/Public Key Verfahren
38Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
Microservice 2
Microservice 1
Microservice 3
Private Key
Public Key
39. Shared Secret vs. Private/Public Key
39Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
Pro Private / Public Key
• Nur der Public Key wird verteilt
• Nur der Auth-Service benötigt deutlich erhöhte Sicherheit
• Wenn der Private Key kompromitiert wird, ist ein einfacher
Schlüsselaustausch möglich
Pro Shared Secret
• Nur ein Schlüssel benötigt, der an alle Services verteilt wird
41. Mind the gap
41Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
Don’ts:
• Niemals Passwörter im JWT verschicken
• auch nicht gehasht…
• Man hat keine Kontrolle über den Ort des JWT
• Token nicht mit dem Auth-Service validieren
Dos:
• Immer Token prüfen (checksum)
• So viele Daten wie nötig, aber so wenige wie möglich
verschicken
43. Kritik
Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
Hauptpunkte des Paragonie Blogposts:
• Fehlerhafte Überprüfung des Headers liegt am Standard
• Vorgegebene Algorithmen für JWE anfällig für Angriffe
43
44. Kritik
Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
Hauptpunkte der „joepie91's Ramblings“ Posts:
• Sie verbrauchen mehr Platz
• Sie sind unsicherer
• Man kann individuelle Tokens nicht invalidieren
• Daten können veralten
• Implementierungen sind nicht „kampferprobt“
• Es gibt doch schon Sessions
44
46. Zusammenfassung
Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
• Erlaubt die lose Kopplung von Microservices
• Sicherer Transfer von Autorisierungs- und
Authentifizierungsinformationen
• Anwendungen im Single Sign On Bereich möglich
• Einfach zu implementieren auf Grund der Libraries
46