Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Jakarta EE Security und Microprofile JWT in Aktion

44 vues

Publié le

heise devSec(), Oktober 2020, online: Vortrag von Mario-Leander Reimer (@LeanderReimer, Chief Software Architect bei QAware)

== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==

Jakarta EE Security und MicroProfile JWT in Aktion
Sicherheit spielt in modernen, hoch verteilten Enterprise-Anwendungen eine tragende Rolle. Leider sind Security APIs und Bibliotheken zumeist sehr technisch und abstrakt, ihre korrekt Verwendung ist kompliziert und fehleranfällig. Mit Jakarta EE Security und Eclipse Microprofile JWT stehen im Java-Enterprise-Ökosystem nun zwei APIs bereit, um Sicherheitsfunktionen wie Authentication, RBAC oder Token-Based Security einfach umzusetzen.

Publié dans : Logiciels
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Jakarta EE Security und Microprofile JWT in Aktion

  1. 1. Jakarta EE Security und Microprofile JWT in Aktion // heise devSec() 2020, October 22nd 2020 @LeanderReimer #cloudnativenerd #qaware mario-leander.reimer@qaware.de
  2. 2. Mario-Leander Reimer Chief Software Architect @LeanderReimer #cloudnativenerd #qaware
  3. 3. // heise devSec() 2020 // Jakarta EE Security und Microprofile JWT in Aktion // @LeanderReimer #cloudnativenerd #qaware3 https://github.com/lreimer/jakartaee-jwt-security Code und Beispiele
  4. 4. // heise devSec() 2020 // Jakarta EE Security und Microprofile JWT in Aktion // @LeanderReimer #cloudnativenerd #qaware • Security Migration von Java EE 7 Bestandsanwendungen • Austausch proprietärer Auth- Mechanismen durch Jakarta EE Security und OpenID Connect 4 • Heterogene Umgebung mit zahlreichen Security Kontexten • Einführung einer homogenen Layer auf Basis von JSON Web Tokens und Microprofile JWT
  5. 5. // heise devSec() 2020 // Jakarta EE Security und Microprofile JWT in Aktion // @LeanderReimer #cloudnativenerd #qaware5 Jakarta EE und Microprofile Historie EJB 1.0 1998 1999 J2EE v1.0 J2EE v1.2 2000 2001 J2EE v1.3 2003 J2EE v1.4 Java EE 5 2006 Java EE 6 2009 Jakarta EE 8 2019 Java EE 7 2013 Java EE 8 2017 2017 Microprofile 1.1 2019 MP 3.0 2018 MP 2.0 Releases every 3 months 2020 MP 3.3 Jakarta EE 9 8th Dec 2020
  6. 6. // heise devSec() 2020 // Jakarta EE Security und Microprofile JWT in Aktion // @LeanderReimer #cloudnativenerd #qaware Overview of Jakarta EE 8 6 JASPIC 1.1
  7. 7. // heise devSec() 2020 // Jakarta EE Security und Microprofile JWT in Aktion // @LeanderReimer #cloudnativenerd #qaware Die eine Dependency für Jakarta EE. 7 <dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-api</artifactId> <version>8.0.0</version> <scope>provided</scope> </dependency>
  8. 8. // heise devSec() 2020 // Jakarta EE Security und Microprofile JWT in Aktion // @LeanderReimer #cloudnativenerd #qaware Nutzung expliziter Dependencies für Security API und Referenz Implementierung Soteria. 8 <dependency> <groupId>jakarta.security.enterprise</groupId> <artifactId>jakarta.security.enterprise-api</artifactId> <version>1.0.1</version> </dependency> <dependency> <groupId>org.glassfish.soteria</groupId> <artifactId>jakarta.security.enterprise</artifactId> <version>1.0.1</version> </dependency>
  9. 9. // heise devSec() 2020 // Jakarta EE Security und Microprofile JWT in Aktion // @LeanderReimer #cloudnativenerd #qaware Jakarta EE Security definiert eine einfache, auf Endbenutzer fokussierte API für moderne und sichere Anwendungen. • HttpAuthenticationMechanism • Schnittstelle um Aufrufe einer Web Application zu authentifizieren • 3 Standard Implementierungen: BASIC HTTP Authentication, Form-based und Custom Form-based Authentication •IdentityStore • Schnittstelle um User Credentials zu validieren und Gruppen Informationen bereitzustellen • 2 Standard Implementierungen: Database und LDAP •SecurityContext • Schnittstelle zur direkten Interaktion mit dem aktuellem Security Kontext im Code falls die die Declarative Security nicht ausreicht 9
  10. 10. // heise devSec() 2020 // Jakarta EE Security und Microprofile JWT in Aktion // @LeanderReimer #cloudnativenerd #qaware10 Benutzer OpenID Authorization Endpoint OpenID Token Endpoint OpenID UserInfo Endpoint Server Relying Party 1) Request Login 2) Redirect to OIDC Provider 3) Authentication Request 4) Return Login/Consent Page 5) Enter credentials and authenticate 6) Send Authorization Code via Callback 7) Exchange Authorization Code for Tokens 8) ID and Access Token returned 9) Exchange Access Token for User Claims 10) UserInfo response returned OpenID Connect Flow
  11. 11. // heise devSec() 2020 // Jakarta EE Security und Microprofile JWT in Aktion // @LeanderReimer #cloudnativenerd #qaware Demo https://github.com/lreimer/jakartaee-jwt-security 11
  12. 12. Overview of MicroProfile 3.3
  13. 13. // heise devSec() 2020 // Jakarta EE Security und Microprofile JWT in Aktion // @LeanderReimer #cloudnativenerd #qaware Microprofile JWT im Detail • Stateless Security für Microservices • Spezifizierte Liste an Pflicht-Claims: typ, alg, kid, iss, sub, aud, iat, exp, jti, upn, groups • Unterstützt ausschließlich RSA-SHA256 basierte digitale Signaturen • Unterstützt JWTs als Bearer Tokens im Authorization HTTP Header • JWTs werden als Authentication Token verwendet, via Issuer und Audience Claim. • JWTs werden als Authorization Token verwendet, via Groups Claim. 13 Non-Goals of Microprofile JWT • JWT Creation Nutzung von API Gateways oder Identity Provider Services (Okta, Auth0) • RSA Public Key Distribution manuelle Verteilung oder Bereitstellung im Docker Image. Nutzung von JSON Web Key Sets. • Automatic JWT Propagation Authorization Header wird nicht automatisch weitergeleitet. Nutzung von MP Rest-Client.
  14. 14. // heise devSec() 2020 // Jakarta EE Security und Microprofile JWT in Aktion // @LeanderReimer #cloudnativenerd #qaware Was sind JSON Web Tokens? • JWT ist in offener Standard der IETF spezifiziert unter RFC 7519 • Ein JWT beinhaltet Header, Claims und Signature • Die Claims sind einfach Key/Value Paare. Es gibt Standard Claims. • Die Signature ist zwar optional, sie ermöglicht aber die Verifikation und stellt Fälschungssicherheit sicher 14 eyJhbGciOiJIUzI1NiIsInR5cCI6 IkpXVCJ9.eyJzdWIiOiIxMjM0NTY 3ODkwIiwibmFtZSI6Ik1hcmlvLUx lYW5kZXIgUmVpbWVyIiwidXBuIjo ibWFyaW8tbGVhbmRlci5yZWltZXJ AcWF3YXJlLmRlIiwiaWF0IjoxNTE 2MjM5MDIyLCJleHAiOjE1MTYyMzk wMjIsImlzcyI6Ii9vYXV0aDIvdG9 rZW4iLCJncm91cHMiOlsiQWRtaW5 pc3RyYXRvciIsIkRldmVsb3BlciJ dfQ.mFqC0QQCB3lNgrJ9KWBZi0le OAxuKfy9qO_xCL4HWM4
  15. 15. // heise devSec() 2020 // Jakarta EE Security und Microprofile JWT in Aktion // @LeanderReimer #cloudnativenerd #qaware Was sind JSON Web Keys? 15 • JWK ist in offener Standard der IETF spezifiziert unter RFC 7517 • JSON Datenstruktur zur Darstellung Kryptografischer Schlüssel • Über JWK Thumbprint (RFC 7638) können Hashes von JWKs berechnet werden. Nutzung als JWT kid Claim • JSON Web Key Sets sind eine Liste von (öffentlichen) JSON Web Keys, werden für die Verteilung genutzt { "kty":"RSA", „use“:“sig", "alg":"RS256", "kid":"dfghj5678sdfadfasdf678asdfasfasdf", "n":"0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4 ... 0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw", "e":"AQAB", "d":"X4cTteJY_gn4FYPsXB8rdXix5vwsg1FLN5E3EaG6RJoVH-HLLKD9 M7dx5oo7GURknchnrRweUkC7hT5fJLM0WbFAKNLWYSzUvxT0_YSfqij ... me1z0HbIkfz0Y6mqnOYtqc0X4jfcKoAC8Q", "p":"83i-7IvMGXoMXCskv73TKr8637FiO7Z27zv8oj6pbWUQyLPQBQxtPV ... WlWEh6dN36GVZYk93N8Bc9vY41xy8B9RzzOGVQzXvNEvn7O0nVbfs", "q":"3dfOR9cuYq-0S-mkFLzgItgMEfFzB2q3hWehMuG0oCuqnb3vobLyum ... kIdrecRezsZ-1kYd_s1qDbxtkDEgfAITAG9LUnADun4vIcb6yelxk", "dp":"G4sPXkc6Ya9y8oJW9_ILj4xuppu0lzi_H7VTkS8xj5SdX3coE0oim ... YZc3C3m3I24G2GvR5sSDxUyAN2zq8Lfn9EUms6rY3Ob8YeiKkTiBj0", "dq":"s9lAH9fggBsoFR8Oac2R_E2gw282rT2kGOAhvIllETE1efrA6huUU ... GF4Dh7e74WbRsobRonujTYN1xCaP6TO61jvWrX-L18txXw494Q_cgk", "qi":"GyM_p6JrXySiz1toFgKbWV-JdI3jQ4ypu9rbMWx3rQJBfmt0FoYzg ... yR8O55XLSe3SPmRfKwZI6yU24ZxvQKFYItdldUKGzO6Ia6zTKhAVRU" }
  16. 16. // heise devSec() 2020 // Jakarta EE Security und Microprofile JWT in Aktion // @LeanderReimer #cloudnativenerd #qaware16 DMZ A Shared PaaS Reverse Proxy Reverse Proxy Namespace Bounded Context A APIGateway Reverse Proxy Users 3rd Party Apps Mobile Namespace Security Context SecurityGateway Auth Service X Auth Service Y Auth Service Z Service A Service B JWKS Service 3 JWT JWT 5 2 2 1 4 4 1. Proprietary Authentication Token 2. Authorise and swap token to JSON Web Token 3. Propagate Token 4. Verify Token with JSON Web Key Set 5. Propagate Token 6. Like 4. Verify Token with JSON Web Key Set 2 JWK
  17. 17. // heise devSec() 2020 // Jakarta EE Security und Microprofile JWT in Aktion // @LeanderReimer #cloudnativenerd #qaware17 Demo https://github.com/lreimer/jakartaee-jwt-security
  18. 18. Mario-Leander Reimer Chief Software Architect, QAware GmbH mario-leander.reimer@qaware.de https://www.qaware.de https://speakerdeck.com/lreimer/ https://github.com/lreimer/ &

×