OAuth 2.1 und OpenID Connect für (Java-)Entwickler

Für eine sichere Authentifizierung und Autorisierung in Web-Anwendungen und Microservices haben sich die Protokolle OAuth 2.x und OpenID Connect (OIDC) als Standards durchgesetzt. Viele Entwickler:innen fehlt aber immer noch das grundlegende Verständnis, was diese Spezifikationen beschreiben und wie sie funktionieren.

In diesem 1-tägigen Training werden wir mittels einer manuellen, beispielhaften Implementierung in Java die kompletten Abläufe in einer Web-Anwendung kennen und verstehen lernen. Hierbei implementieren wir für einen Client (Web-Anwendung) die Benutzer-Authentifizierung mittels des Authorization-Code-Grants, auch inkl. Proof-Key-for-Code-Exchange (PKCE). Das darüber erhaltene (JSON-Web-)Token nutzen wir dann, um einen Endpunkt in einem Resource-Server aufzurufen. Der Resource-Server muss dann wieder seinerseits das propagierte signierte Token verifizieren und auf Gültigkeit prüfen. Auch diese Implementierung nehmen wir beispielhaft vor und lernen dabei, wie sich ein Client automatisch selbst konfigurieren kann.

Während der Implementierung diskutieren wir Best-Practices und Do’s & Don’ts im Umgang mit Tokens, lernen die gültigen OAuth 2.1 Grant-Types kennen und welche Unterschiede die neue OAuth 2.1 Version gegenüber der mittlerweile fast 12 Jahre alten 2.0 Version mitbringt. Für die Nutzung von OIDC und JWTs in Single-Page-Apps gibt es ebenso wertvolle Tipps.

Vieles von dem, was wir in diesem Training implementieren, wird in einer produktiven Umgebung eher durch eine entsprechende OIDC-Bibliothek weggekapselt und durchgeführt. Durch diese Kapselung ist aber nicht ersichtlich, was genau ein Client macht bzw. für die Protokolle tun muss, um damit erfolgreich zu arbeiten und eine sichere Authentifizierung zu ermöglichen. Mittels dieses Trainings werden die Abläufe und Details anschaulich dargestellt und vermittelt, so dass ein besseres und tiefes Verständnis der Protokolle hergestellt und eine potenzielle Fehlersuche damit erleichtert wird. Denn nur wer die Details kennt, kann ein System beherrschen!

Vorkenntnisse und Zielgruppe

Der Workshop richtet sich an alle Personen aus der Software-Entwicklung, die einen tieferen Einblick in die Arbeitsweise der Autorisierungs- und Authentifizierungs-Spezifikationen OAuth 2 und OpenID Connect (OIDC) bekommen möchten. Vorkenntnisse im Umfeld Authentifizierung/Autorisierung sind hilfreich, aber nicht Voraussetzung für dieses Training.

Da wir die Abläufe und Verifizierungen in Java-Code implementieren werden, sind entsprechend aktuelle Java-Kenntnisse und der Umgang mit einer Java-IDE unbedingt erforderlich.

Als Test- und Evaluierungsumgebung verwenden wir eine lokale Docker Umgebung, um den operativen Overhead so gering wie möglich zu halten.

Lernziele und Agenda

  • OAuth 2 und OIDC Grundlagen:
    Grant-Types, Access-, ID- & Refresh-Tokens, JSON-Web-Tokens (JWT)
  • Änderungen der OAuth 2.1 Version gegenüber OAuth 2.0
  • Best-Practices im Umgang mit Tokens in serverseitigen und clientseitigen (z.B. Single-Page-App) Web-Anwendungen
  • Authentifizierung von Benutzern mit einem Client über den Authorization Code Grant + PKCE (Proof-Key for Code Exchange)
  • Verifizierung von signierten JSON-Web-Tokens für die Authentifizierung/Autorisierung in einem Backend-Resource-Server mit Autokonfiguration

Technische Anforderungen

  • Notebook/Laptop
  • Java-IDE nach Wahl (z.B. IntelliJ IDEA, Eclipse, VS Code, Netbeans, etc.)
  • JDK 17+
  • Docker und Docker Compose V2 installiert und lauffähig (ggf. lokale Admin-Rechte auf dem Rechner erteilen)
  • Internetzugriff (ggf. Proxy-/Firewall-/VPN-Konfigurationen etc. überprüfen)
  • separater HTTP-Client, wenn die IDE diesen nicht mitbringt (z.B. Insomnia, Postman, REST-Client for VS Code Plugin, etc.)
  • Browser

Dauer

1 Tag

Öffentliche Termine

  • gerne auch auf Deine Anfrage!

Kontaktiere mich!

Melde Dich gerne direkt über das folgende Kontaktformular bei mir, wenn Du Interesse an diesem OAuth 2.1 und OpenID Connect Training hast.
Ich freue mich darauf und werde mich so bald wie möglich bei Dir melden!