SlideShare ist ein Scribd-Unternehmen logo
Autorisierung	
  und	
  Authentifizierung	
  in	
  
Microserviceumgebungen
Bernd	
  Schönbach,	
  Bonn	
  Agile	
  Meetup 2.	
  Mai	
  2017
Ü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
Was ist das Problem?
Was ist das Problem?
4Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
Was ist das Problem?
5Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
Was ist das Problem?
6Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
Was ist das Problem?
7Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
Und wie helfen uns jetzt
JSON Web Tokens dabei?
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
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
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	
  
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
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
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
Was sind nun also
JSON Web Tokens?
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.”
Was sind JSON Web Tokens (JWT)?
17Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
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
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
JWS - Header
20Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
{
"alg": "HS256",
"typ": "JWT“
}
{
"alg": "HS256",
"typ": "JWT“
}
Bespielwerte:
• HS256
• RS256
• ES256
Spezialfall:
• none
JWS - Payload
21Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
- Enthält Informationen
- Zum Beispiel
- Aussteller (iss)
- Ablaufdatum (exp)
- Empfänger (sub)
- Features
- Permissions
- …
{
"iss": "auth-service-1",
"name": "John Doe",
"admin": true,
"exp": 1487325600
}
Bitte so wenig wie nötig mitschicken, um das Token klein zu halten
JWS - Signatur
22Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
HMACSHA256(
base64UrlEncode(header) + "." + base64UrlEncode(payload),
secret
)
• Verifiziert Herausgeber und Inhalt des JWS Token
• Signatur enthält Header und Payload
JWS Beispiel
23Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.
TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
Header: { "alg": "HS256", "typ": "JWT"}
Payload:
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
Signatur:
HMACSHA256(
base64UrlEncode(header) +
"." +
base64UrlEncode(payload),
secret
)
JSON Web Encryption (RFC 7516)
24Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
• Transportiert	
  ähnliche	
  Informationen
• Alle	
  Daten	
  werden	
  verschlüsselt
• Verschlüsselung	
  nutzt	
  Salt,	
  um	
  Erratbarkeit zu	
  
minimieren
Beispiele
JWS Erstellung in Java
26Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
public String createJwt(User loggedInUser) {
JwtBuilder builder = Jwts.builder()
.setSubject(loggedInUser.getUsername())
.claim(„payload“, loggedInUser.getPayload())
.setId(loggedInUser.getId())
.setExpiration(calculateExpirationTime());
return builder.signWith(
SignatureAlgorithm.RS256, privateKey
)
.compact();
}
JWS Prüfung in Java
27Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
Claims claims = Jwts.parser()
.setSigningKey(publicKey)
.parseClaimsJws(accesTokenString)
.getBody();
Wichtig!:
- Überprüfe immer, ob der Erwartete Algorithmus benutzt wird
- “none” alg header darf nicht zu fehlender Prüfung führen!
https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/
JWS Benutzung in Java mit Dropwizard
28Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
@Override
public Optional<User> authenticate(String accessToken) {
if (accessToken == null)
return Optional.absent();
OAuth2Token token = this.parser.parse(accessToken);
return Optional.fromNullable((User) token.getPrincipal());
}
Authenticator Klasse anpassen:
@Auth Annotation nutzen:
public Response getX(
@Auth @ApiParam(access="internal") User user
){
[…]
}
JWS Libraries
29Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
Libraries existieren für nahezu alle Programmiersprachen:
• .NET
• Pyhton
• Node.js
• Java
• JavaScript
• Perl
• Ruby
• Elixir
• Go
• Haskell
• Rust
• Lua
• Scala
• D
• Clojure
• Objective C
• Swift
• C
• Kdb+/Q
• Delphi
• PHP
• Crystal
• …
Kleiner Vergleich zwischen
JWS und JWE
vs
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
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
Shared Secret
vs.
Private/Public Key
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
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
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
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
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
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
Mind the gap
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
Kritische Betrachtung
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
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
Zusammenfassung
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
Danke
(and yes we are hiring)
https://www.leanix.net/de/jobs
Quellen
48Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
• https://tools.ietf.org/html/rfc7519 RFC for JWT
• https://tools.ietf.org/html/rfc7518 RFC for JWA (used in JWS and JWE)
• https://jwt.io/
• https://www.leanix.net/
• Devil Smiley CC BY 4.0 https://www.creativetail.com
• Weitere Artikel zum Thema JWT:
• https://blog.codecentric.de/2016/11/json-web-token-jwt-im-detail/
• https://medium.facilelogin.com/jwt-jws-and-jwe-for-not-so-dummies-b63310d201a3
• https://paragonie.com/blog/2017/03/jwt-json-web-tokens-is-bad-standard-that
-everyone-should-avoid
• http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/
• http://cryto.net/~joepie91/blog/2016/06/19/stop-using-jwt-for-sessions-part-2-why
-your-solution-doesnt-work/

Weitere ähnliche Inhalte

Ähnlich wie Autorisierung und Authentifizierung in Microserviceumgebungen

Blockchain | Vom Placebo zum Heilmittel
Blockchain | Vom Placebo zum HeilmittelBlockchain | Vom Placebo zum Heilmittel
Blockchain | Vom Placebo zum Heilmittel
Andy Martens
 
Blockchain im Digitalen Wien - Technologie einer innovativen Verwaltung
Blockchain im Digitalen Wien - Technologie einer innovativen VerwaltungBlockchain im Digitalen Wien - Technologie einer innovativen Verwaltung
Blockchain im Digitalen Wien - Technologie einer innovativen Verwaltung
Stadt Wien
 
Clash of Cultures: Agile Microservices & Business Intelligence (Frank Schmidt...
Clash of Cultures: Agile Microservices & Business Intelligence (Frank Schmidt...Clash of Cultures: Agile Microservices & Business Intelligence (Frank Schmidt...
Clash of Cultures: Agile Microservices & Business Intelligence (Frank Schmidt...
confluent
 
Microprofile.io - Cloud Native mit Java EE
Microprofile.io - Cloud Native mit Java EEMicroprofile.io - Cloud Native mit Java EE
Microprofile.io - Cloud Native mit Java EE
Michael Hofmann
 
Compliance needs transparency
Compliance needs transparencyCompliance needs transparency
Compliance needs transparency
BalaBit
 
Blockchain in der Stadt Wien und darüber hinaus
Blockchain in der Stadt Wien und darüber hinausBlockchain in der Stadt Wien und darüber hinaus
Blockchain in der Stadt Wien und darüber hinaus
Stadt Wien
 
BATbern53 BKW Easy Migration through Clean Architecture
BATbern53 BKW Easy Migration through Clean ArchitectureBATbern53 BKW Easy Migration through Clean Architecture
BATbern53 BKW Easy Migration through Clean Architecture
BATbern
 
Die dunkle Seite der Microservices - und wie du sie besiegen kannst
Die dunkle Seite der Microservices - und wie du sie besiegen kannst Die dunkle Seite der Microservices - und wie du sie besiegen kannst
Die dunkle Seite der Microservices - und wie du sie besiegen kannst
inovex GmbH
 
Blockchain im Digitalen Wien - Technologie einer innovativen Verwaltung
Blockchain im Digitalen Wien - Technologie einer innovativen VerwaltungBlockchain im Digitalen Wien - Technologie einer innovativen Verwaltung
Blockchain im Digitalen Wien - Technologie einer innovativen Verwaltung
Stadt Wien
 
Voquz IT Solutions Unternehmenspräsention
Voquz IT Solutions UnternehmenspräsentionVoquz IT Solutions Unternehmenspräsention
Voquz IT Solutions Unternehmenspräsention
Voquz Group
 
Rails goes SOA
Rails goes SOARails goes SOA
Rails goes SOA
Dirk Breuer
 
Osudio + commercetools Webinar: Microservices - Flexibilität und Geschwindigk...
Osudio + commercetools Webinar: Microservices - Flexibilität und Geschwindigk...Osudio + commercetools Webinar: Microservices - Flexibilität und Geschwindigk...
Osudio + commercetools Webinar: Microservices - Flexibilität und Geschwindigk...
Dirk Hoerig
 
Chatbot Hackathon Slidedeck
Chatbot Hackathon SlidedeckChatbot Hackathon Slidedeck
Chatbot Hackathon Slidedeck
Allgeier (Schweiz) AG
 
Dev Day Stephan Pirnbaum.pdf
Dev Day Stephan Pirnbaum.pdfDev Day Stephan Pirnbaum.pdf
Dev Day Stephan Pirnbaum.pdf
CarolinaMatthies
 
Modern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit JavaModern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit Java
OPEN KNOWLEDGE GmbH
 
Lückenlose Datenhoheit durch Blockchain-Technologie
Lückenlose Datenhoheit durch Blockchain-TechnologieLückenlose Datenhoheit durch Blockchain-Technologie
Lückenlose Datenhoheit durch Blockchain-Technologie
Roger L. Basler de Roca
 
180503 blockchain day dvz
180503 blockchain day dvz180503 blockchain day dvz
180503 blockchain day dvz
Frank Bolten
 
Token statt Cookies dank JWT - #ETKA16
Token statt Cookies dank JWT - #ETKA16Token statt Cookies dank JWT - #ETKA16
Token statt Cookies dank JWT - #ETKA16
Markus Schlichting
 
Microservices mit dem MicroProfile
Microservices mit dem MicroProfileMicroservices mit dem MicroProfile
Microservices mit dem MicroProfile
OPEN KNOWLEDGE GmbH
 
Bank-Kram made by Railslove
Bank-Kram made by RailsloveBank-Kram made by Railslove
Bank-Kram made by Railslove
Railslove / hack.institute
 

Ähnlich wie Autorisierung und Authentifizierung in Microserviceumgebungen (20)

Blockchain | Vom Placebo zum Heilmittel
Blockchain | Vom Placebo zum HeilmittelBlockchain | Vom Placebo zum Heilmittel
Blockchain | Vom Placebo zum Heilmittel
 
Blockchain im Digitalen Wien - Technologie einer innovativen Verwaltung
Blockchain im Digitalen Wien - Technologie einer innovativen VerwaltungBlockchain im Digitalen Wien - Technologie einer innovativen Verwaltung
Blockchain im Digitalen Wien - Technologie einer innovativen Verwaltung
 
Clash of Cultures: Agile Microservices & Business Intelligence (Frank Schmidt...
Clash of Cultures: Agile Microservices & Business Intelligence (Frank Schmidt...Clash of Cultures: Agile Microservices & Business Intelligence (Frank Schmidt...
Clash of Cultures: Agile Microservices & Business Intelligence (Frank Schmidt...
 
Microprofile.io - Cloud Native mit Java EE
Microprofile.io - Cloud Native mit Java EEMicroprofile.io - Cloud Native mit Java EE
Microprofile.io - Cloud Native mit Java EE
 
Compliance needs transparency
Compliance needs transparencyCompliance needs transparency
Compliance needs transparency
 
Blockchain in der Stadt Wien und darüber hinaus
Blockchain in der Stadt Wien und darüber hinausBlockchain in der Stadt Wien und darüber hinaus
Blockchain in der Stadt Wien und darüber hinaus
 
BATbern53 BKW Easy Migration through Clean Architecture
BATbern53 BKW Easy Migration through Clean ArchitectureBATbern53 BKW Easy Migration through Clean Architecture
BATbern53 BKW Easy Migration through Clean Architecture
 
Die dunkle Seite der Microservices - und wie du sie besiegen kannst
Die dunkle Seite der Microservices - und wie du sie besiegen kannst Die dunkle Seite der Microservices - und wie du sie besiegen kannst
Die dunkle Seite der Microservices - und wie du sie besiegen kannst
 
Blockchain im Digitalen Wien - Technologie einer innovativen Verwaltung
Blockchain im Digitalen Wien - Technologie einer innovativen VerwaltungBlockchain im Digitalen Wien - Technologie einer innovativen Verwaltung
Blockchain im Digitalen Wien - Technologie einer innovativen Verwaltung
 
Voquz IT Solutions Unternehmenspräsention
Voquz IT Solutions UnternehmenspräsentionVoquz IT Solutions Unternehmenspräsention
Voquz IT Solutions Unternehmenspräsention
 
Rails goes SOA
Rails goes SOARails goes SOA
Rails goes SOA
 
Osudio + commercetools Webinar: Microservices - Flexibilität und Geschwindigk...
Osudio + commercetools Webinar: Microservices - Flexibilität und Geschwindigk...Osudio + commercetools Webinar: Microservices - Flexibilität und Geschwindigk...
Osudio + commercetools Webinar: Microservices - Flexibilität und Geschwindigk...
 
Chatbot Hackathon Slidedeck
Chatbot Hackathon SlidedeckChatbot Hackathon Slidedeck
Chatbot Hackathon Slidedeck
 
Dev Day Stephan Pirnbaum.pdf
Dev Day Stephan Pirnbaum.pdfDev Day Stephan Pirnbaum.pdf
Dev Day Stephan Pirnbaum.pdf
 
Modern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit JavaModern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit Java
 
Lückenlose Datenhoheit durch Blockchain-Technologie
Lückenlose Datenhoheit durch Blockchain-TechnologieLückenlose Datenhoheit durch Blockchain-Technologie
Lückenlose Datenhoheit durch Blockchain-Technologie
 
180503 blockchain day dvz
180503 blockchain day dvz180503 blockchain day dvz
180503 blockchain day dvz
 
Token statt Cookies dank JWT - #ETKA16
Token statt Cookies dank JWT - #ETKA16Token statt Cookies dank JWT - #ETKA16
Token statt Cookies dank JWT - #ETKA16
 
Microservices mit dem MicroProfile
Microservices mit dem MicroProfileMicroservices mit dem MicroProfile
Microservices mit dem MicroProfile
 
Bank-Kram made by Railslove
Bank-Kram made by RailsloveBank-Kram made by Railslove
Bank-Kram made by Railslove
 

Mehr von LeanIX GmbH

LeanIX Virtual Workspaces
LeanIX Virtual WorkspacesLeanIX Virtual Workspaces
LeanIX Virtual Workspaces
LeanIX GmbH
 
How to reduce complexity by segregating your data with Virtual Workspaces
How to reduce complexity by segregating your data with Virtual WorkspacesHow to reduce complexity by segregating your data with Virtual Workspaces
How to reduce complexity by segregating your data with Virtual Workspaces
LeanIX GmbH
 
Gartner EA: The Rise of Data-driven Architectures
Gartner EA: The Rise of Data-driven ArchitecturesGartner EA: The Rise of Data-driven Architectures
Gartner EA: The Rise of Data-driven Architectures
LeanIX GmbH
 
Application Harmonisation using Design Principles in LeanIX
Application Harmonisation using Design Principles in LeanIXApplication Harmonisation using Design Principles in LeanIX
Application Harmonisation using Design Principles in LeanIX
LeanIX GmbH
 
Effective EAM: whet your appetite & deliver solutions
Effective EAM: whet your appetite & deliver solutionsEffective EAM: whet your appetite & deliver solutions
Effective EAM: whet your appetite & deliver solutions
LeanIX GmbH
 
Lean EAM with the Microservices Add-on and the Signavio Integration
Lean EAM with the Microservices Add-on and the Signavio IntegrationLean EAM with the Microservices Add-on and the Signavio Integration
Lean EAM with the Microservices Add-on and the Signavio Integration
LeanIX GmbH
 
Next Level Enterprise Architecture
Next Level Enterprise ArchitectureNext Level Enterprise Architecture
Next Level Enterprise Architecture
LeanIX GmbH
 
Integration Architecture with the Data Flow
Integration Architecture with the Data FlowIntegration Architecture with the Data Flow
Integration Architecture with the Data Flow
LeanIX GmbH
 
LeanIX-ServiceNow Integration
LeanIX-ServiceNow IntegrationLeanIX-ServiceNow Integration
LeanIX-ServiceNow Integration
LeanIX GmbH
 
Application Rationalization with LeanIX
Application Rationalization with LeanIXApplication Rationalization with LeanIX
Application Rationalization with LeanIX
LeanIX GmbH
 
Custom Reports & Integrations with GraphQL
Custom Reports & Integrations with GraphQLCustom Reports & Integrations with GraphQL
Custom Reports & Integrations with GraphQL
LeanIX GmbH
 
LeanIX Inventory: Import & Export
LeanIX Inventory: Import & ExportLeanIX Inventory: Import & Export
LeanIX Inventory: Import & Export
LeanIX GmbH
 
Survey Add-on Showcase: Cloud Transformation
Survey Add-on Showcase: Cloud TransformationSurvey Add-on Showcase: Cloud Transformation
Survey Add-on Showcase: Cloud Transformation
LeanIX GmbH
 
The LeanIX Microservices Integration
The LeanIX Microservices IntegrationThe LeanIX Microservices Integration
The LeanIX Microservices Integration
LeanIX GmbH
 
Ensure GDPR Compliance with LeanIX
Ensure GDPR Compliance with LeanIXEnsure GDPR Compliance with LeanIX
Ensure GDPR Compliance with LeanIX
LeanIX GmbH
 
LeanIX-Signavio Integration
LeanIX-Signavio IntegrationLeanIX-Signavio Integration
LeanIX-Signavio Integration
LeanIX GmbH
 
How to set up a Lean Standards Governance
How to set up a Lean Standards GovernanceHow to set up a Lean Standards Governance
How to set up a Lean Standards Governance
LeanIX GmbH
 
Innovative API-Based LeanIX Enhancements
Innovative API-Based LeanIX EnhancementsInnovative API-Based LeanIX Enhancements
Innovative API-Based LeanIX Enhancements
LeanIX GmbH
 
Moving EA - from where we are to where we should be
Moving EA - from where we are to where we should beMoving EA - from where we are to where we should be
Moving EA - from where we are to where we should be
LeanIX GmbH
 
Is next generation EAM more than just agile IT planning?
Is next generation EAM more than just agile IT planning?Is next generation EAM more than just agile IT planning?
Is next generation EAM more than just agile IT planning?
LeanIX GmbH
 

Mehr von LeanIX GmbH (20)

LeanIX Virtual Workspaces
LeanIX Virtual WorkspacesLeanIX Virtual Workspaces
LeanIX Virtual Workspaces
 
How to reduce complexity by segregating your data with Virtual Workspaces
How to reduce complexity by segregating your data with Virtual WorkspacesHow to reduce complexity by segregating your data with Virtual Workspaces
How to reduce complexity by segregating your data with Virtual Workspaces
 
Gartner EA: The Rise of Data-driven Architectures
Gartner EA: The Rise of Data-driven ArchitecturesGartner EA: The Rise of Data-driven Architectures
Gartner EA: The Rise of Data-driven Architectures
 
Application Harmonisation using Design Principles in LeanIX
Application Harmonisation using Design Principles in LeanIXApplication Harmonisation using Design Principles in LeanIX
Application Harmonisation using Design Principles in LeanIX
 
Effective EAM: whet your appetite & deliver solutions
Effective EAM: whet your appetite & deliver solutionsEffective EAM: whet your appetite & deliver solutions
Effective EAM: whet your appetite & deliver solutions
 
Lean EAM with the Microservices Add-on and the Signavio Integration
Lean EAM with the Microservices Add-on and the Signavio IntegrationLean EAM with the Microservices Add-on and the Signavio Integration
Lean EAM with the Microservices Add-on and the Signavio Integration
 
Next Level Enterprise Architecture
Next Level Enterprise ArchitectureNext Level Enterprise Architecture
Next Level Enterprise Architecture
 
Integration Architecture with the Data Flow
Integration Architecture with the Data FlowIntegration Architecture with the Data Flow
Integration Architecture with the Data Flow
 
LeanIX-ServiceNow Integration
LeanIX-ServiceNow IntegrationLeanIX-ServiceNow Integration
LeanIX-ServiceNow Integration
 
Application Rationalization with LeanIX
Application Rationalization with LeanIXApplication Rationalization with LeanIX
Application Rationalization with LeanIX
 
Custom Reports & Integrations with GraphQL
Custom Reports & Integrations with GraphQLCustom Reports & Integrations with GraphQL
Custom Reports & Integrations with GraphQL
 
LeanIX Inventory: Import & Export
LeanIX Inventory: Import & ExportLeanIX Inventory: Import & Export
LeanIX Inventory: Import & Export
 
Survey Add-on Showcase: Cloud Transformation
Survey Add-on Showcase: Cloud TransformationSurvey Add-on Showcase: Cloud Transformation
Survey Add-on Showcase: Cloud Transformation
 
The LeanIX Microservices Integration
The LeanIX Microservices IntegrationThe LeanIX Microservices Integration
The LeanIX Microservices Integration
 
Ensure GDPR Compliance with LeanIX
Ensure GDPR Compliance with LeanIXEnsure GDPR Compliance with LeanIX
Ensure GDPR Compliance with LeanIX
 
LeanIX-Signavio Integration
LeanIX-Signavio IntegrationLeanIX-Signavio Integration
LeanIX-Signavio Integration
 
How to set up a Lean Standards Governance
How to set up a Lean Standards GovernanceHow to set up a Lean Standards Governance
How to set up a Lean Standards Governance
 
Innovative API-Based LeanIX Enhancements
Innovative API-Based LeanIX EnhancementsInnovative API-Based LeanIX Enhancements
Innovative API-Based LeanIX Enhancements
 
Moving EA - from where we are to where we should be
Moving EA - from where we are to where we should beMoving EA - from where we are to where we should be
Moving EA - from where we are to where we should be
 
Is next generation EAM more than just agile IT planning?
Is next generation EAM more than just agile IT planning?Is next generation EAM more than just agile IT planning?
Is next generation EAM more than just agile IT planning?
 

Autorisierung und Authentifizierung in Microserviceumgebungen

  • 1. Autorisierung  und  Authentifizierung  in   Microserviceumgebungen Bernd  Schönbach,  Bonn  Agile  Meetup 2.  Mai  2017
  • 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
  • 3. Was ist das Problem?
  • 4. Was ist das Problem? 4Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
  • 5. Was ist das Problem? 5Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
  • 6. Was ist das Problem? 6Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
  • 7. Was ist das Problem? 7Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX
  • 8. Und wie helfen uns jetzt JSON Web Tokens dabei?
  • 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
  • 15. Was sind nun also JSON Web Tokens?
  • 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
  • 20. JWS - Header 20Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX { "alg": "HS256", "typ": "JWT“ } { "alg": "HS256", "typ": "JWT“ } Bespielwerte: • HS256 • RS256 • ES256 Spezialfall: • none
  • 21. JWS - Payload 21Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX - Enthält Informationen - Zum Beispiel - Aussteller (iss) - Ablaufdatum (exp) - Empfänger (sub) - Features - Permissions - … { "iss": "auth-service-1", "name": "John Doe", "admin": true, "exp": 1487325600 } Bitte so wenig wie nötig mitschicken, um das Token klein zu halten
  • 22. JWS - Signatur 22Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret ) • Verifiziert Herausgeber und Inhalt des JWS Token • Signatur enthält Header und Payload
  • 23. JWS Beispiel 23Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9. TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ Header: { "alg": "HS256", "typ": "JWT"} Payload: { "sub": "1234567890", "name": "John Doe", "admin": true } Signatur: HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret )
  • 24. JSON Web Encryption (RFC 7516) 24Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX • Transportiert  ähnliche  Informationen • Alle  Daten  werden  verschlüsselt • Verschlüsselung  nutzt  Salt,  um  Erratbarkeit zu   minimieren
  • 26. JWS Erstellung in Java 26Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX public String createJwt(User loggedInUser) { JwtBuilder builder = Jwts.builder() .setSubject(loggedInUser.getUsername()) .claim(„payload“, loggedInUser.getPayload()) .setId(loggedInUser.getId()) .setExpiration(calculateExpirationTime()); return builder.signWith( SignatureAlgorithm.RS256, privateKey ) .compact(); }
  • 27. JWS Prüfung in Java 27Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX Claims claims = Jwts.parser() .setSigningKey(publicKey) .parseClaimsJws(accesTokenString) .getBody(); Wichtig!: - Überprüfe immer, ob der Erwartete Algorithmus benutzt wird - “none” alg header darf nicht zu fehlender Prüfung führen! https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/
  • 28. JWS Benutzung in Java mit Dropwizard 28Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX @Override public Optional<User> authenticate(String accessToken) { if (accessToken == null) return Optional.absent(); OAuth2Token token = this.parser.parse(accessToken); return Optional.fromNullable((User) token.getPrincipal()); } Authenticator Klasse anpassen: @Auth Annotation nutzen: public Response getX( @Auth @ApiParam(access="internal") User user ){ […] }
  • 29. JWS Libraries 29Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX Libraries existieren für nahezu alle Programmiersprachen: • .NET • Pyhton • Node.js • Java • JavaScript • Perl • Ruby • Elixir • Go • Haskell • Rust • Lua • Scala • D • Clojure • Objective C • Swift • C • Kdb+/Q • Delphi • PHP • Crystal • …
  • 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
  • 47. Danke (and yes we are hiring) https://www.leanix.net/de/jobs
  • 48. Quellen 48Autorisierung und Authentifizierung in Microserviceumgebungen – Bonn Agile 2017 – Bernd Schönbach – LeanIX • https://tools.ietf.org/html/rfc7519 RFC for JWT • https://tools.ietf.org/html/rfc7518 RFC for JWA (used in JWS and JWE) • https://jwt.io/ • https://www.leanix.net/ • Devil Smiley CC BY 4.0 https://www.creativetail.com • Weitere Artikel zum Thema JWT: • https://blog.codecentric.de/2016/11/json-web-token-jwt-im-detail/ • https://medium.facilelogin.com/jwt-jws-and-jwe-for-not-so-dummies-b63310d201a3 • https://paragonie.com/blog/2017/03/jwt-json-web-tokens-is-bad-standard-that -everyone-should-avoid • http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/ • http://cryto.net/~joepie91/blog/2016/06/19/stop-using-jwt-for-sessions-part-2-why -your-solution-doesnt-work/