Posts

Posts mit dem Label "Security" werden angezeigt.

Authentifizierung in Web-Anwendungen mit Spring Security 6

Bild
Spring Security hilft uns beim Authentifizieren und Autorisieren von Benutzern in Java Web-Anwendungen. Da Spring Security ein mächtiges und komplexes Framework ist, zeige ich in diesem Einstiegsartikel, wie wir die von Spring Boot vorkonfigurierte Spring Security Authentifizierung nutzen und anpassen können. In diesem Artikel demonstriere ich Spring Security 6 passend zum aktuellen Spring Framework in Version 6. Das Demo Projekt wurde mit der neuen Spring Boot Version 3 erstellt. Spring Security Spring Security ist eins mächtiges und flexibel anpassbares Authentifizierungs- und Zugangskontroll-Framework. In der Praxis ist es der Standard zum Absichern von Spring basierten Web-Anwendungen. Weitere Infos zum Spring Security Projekt findet man hier:  https://spring.io/projects/spring-security . Video zum Blog-Artikel Spring Security Dependency für das Build-Tool Mit Spring Boot kann man Spring Security einfach beim Aufsetzen eines neuen Projektes hinzufügen. Das funktioniert so, wie ich

Erfahrungsbericht Spring Boot 3 Update

Bild
Unser Java-System ist jetzt mit Spring Boot Version 3 im produktiven Einsatz! Hier teile ich meinen Erfahrungsbericht, da sich Systeme in der echten Welt häufig von Demos oder Tutorials unterscheiden. Highlights Spring Boot 3 Warum auf Spring Boot 3 und damit auf die Version 6 des Spring Frameworks updaten? Spring 6 ist auf die aktuelle Java LTS Version 17 aktualisiert. Damit modernisiert Spring sich in erster Linie selbst, wovon wir indirekt profitieren. Native Images mit GraalVM werden offiziell supported. Das ermöglicht unserer Spring Anwendung den blitzschnellen Start als Docker Container, siehe graalvm.html . Viele direkt oder indirekt verwendete 3rd Party Bibliotheken sind auf neue Versionen aktualisiert. Wir bekommen damit diverse Fixes für Sicherheitslücken. Planung des Spring Boot 3 Updates Der Spring Boot 3.0 Migration Guide enthält im Wesentlichen diese Schritte: Update auf Spring Boot 2.7 Update auf Java 17 Update auf Spring Boot 3 Dependencies anpassen Code anpassen Unser

OpenID Connect mit Spring Boot 3

Bild
Authentifizierung mit OpenID Connect geht einfach dank Spring Boot. Wir bauen den Login Deiner Web-Anwendung mit dem Autorisierungsserver Deiner Firma. Wie wir dazu OpenID Connect mit Spring Boot 3 konfigurieren, zeige ich in diesem Blog-Artikel. OpenID Connect - Authorization Code Prozess OpenID Connect ist ein Single Sign-On Login-Verfahren. Zur Umsetzung komplexer Anwendungsfälle verwenden größere Firmen meist verteilte Systeme. Damit der Benutzer z. B. beim Online-Shopping den Systemwechsel von Produktseiten zum Einkaufswagen und zur Kasse nicht wahrnimmt, loggt er sich mittels Single Sign-On nur einmal ein. Die beteiligten Systeme authentifizieren den eingeloggten Benutzer anhand seiner Single Sign-On Session. Detaillierte Informationen über OpenID Connect und Single Sign-On findet ihr hier . In diesem Artikel fokussiere ich mich auf das Anwendungs-System, welches zur Benutzer-Authentifizierung den firmeneigenen OpenID Identity Provider verwendet. Bevor wir uns die Implementierung

Spring Security 6: Login, Logout & Rollen

Bild
Spring Security ermöglicht Login und Logout für Web-Anwendungen in  wenigen Konfigurationsschritten . Mit Spring Security sichern wir einzelne  Webseiten oder API-Endpunkte  so ab, dass nur authentifizierte Benutzer mit festgelegten Rollen zugreifen können. Wie funktioniert das? Lest weiter! Hinweis: Für einen ersten Einblick zu Spring Security, schaut euch gerne meinen Einsteiger-Artikel an. Dort seht ihr wie Spring Security zum Spring Boot hinzugefügt wird und wie Benutzer mit Rollen definiert werden. Abgesicherte und frei zugängliche Seiten Die Spring Security Starter Dependency ist ohne weitere Konfiguration produktionsbereit, da sie alles absichert. Nur eingeloggte Benutzer haben Zugang. Um anonymen Benutzern bestimmte Seiten zugänglich zu machen, müssen wir die Authentifizierung und den Default Login anpassen. @Configuration @EnableWebSecurity public class SecurityConfiguration {      @Bean      SecurityFilterChain authenticatedAndFreePagesWithLogin(                HttpSecurity

Spring Session für Web-Anwendungen mit Zuständen

Bild
Web-Anwendungen mit Zuständen sind häufig aufgrund der benötigten Session kein leichtes Thema. Daher gibt es im Spring Framework das Projekt Spring Session, welches uns ohne großen Aufwand die Daten der Session vom Application Server auslagert, so dass wir unsere Web-Anwendung clustern können. Hier werde ich zeigen, wie einfach ihr Spring Session in eurer Spring Boot Projekt einbinden könnt. Spring Session in Spring Boot Projekten integrieren In einem anderen Blog-Artikel habe ich eine Web-Anwendung mit Thymeleaf gebaut. In dieser Anwendung wurde die Session bisher weder benutzt noch persistiert, so dass die Daten des Benutzers nach einem Anwendungsneustart oder Serverwechsel im Cluster weg waren. Spring Boot ermöglicht uns dank vorbereiteter Default-Konfiguration das Integrieren einer persistenten Session in 2 Schritten. Diese werde ich euch hier mit MongoDB als Datenbank zum Persistieren der Session zeigen. Neben der MongoDB kann die Session auch in einer JDBC basierten Datenbank, R

Bedrohungslage Rot: Ist meine Anwendung von der kritischen log4j Schwachstelle betroffen?

Bild
Das Bundesamt für Sicherheit in der Informationstechnik hat wegen einer Schwachstelle im stark verbreiteten Java Logging-Framework log4j die IT-Bedrohungslage 4 / Rot ausgerufen. Daher schreibe ich aus aktuellem Anlass diesen Artikel, um euch eine Hilfestellung bei der Analyse zu geben. Seit dem 12.12.2021 geht dieser Alarm durch die Presse, hier Meldungen: https://www.heise.de/ratgeber/Schutz-vor-schwerwiegender-Log4j-Luecke-was-jetzt-hilft-und-was-nicht https://www.spiegel.de/netzwelt/web/log4-j-schwachstelle-ja-leute-die-scheisse-brennt-lichterloh https://www.bsi.bund.de/DE/Service-Navi/Presse/Alle-Meldungen-News/Meldungen/Schwachstelle_Log4j Wie prüfen, ob mein System betroffen ist? Um herauszufinden, ob ihr betroffen seid, durchsucht ihr die Dependencies bzw. verwendeten Bibliotheken in euer Software. Dabei prüft ihr, ob ihr generell log4j verwendet und wenn ja in welcher Version. Laut BSI sind die Versionen 2.0 bis 2.14.1 von log4j betroffen. Die ältere Version 1.x ist nicht betr

OAuth2 REST-API Clients leicht gemacht mit Spring

Bild
Viele REST-APIs sind heute mit OAuth2 abgesichert. Daher bietet uns Spring eine einfache Möglichkeit das OAuth2-Protokoll  in den bekannten HTTP-Clients WebClient und RestTemplate  zu implementieren, so dass wir uns nicht mehr selbst um Access und Refresh-Tokens kümmern müssen. Wie das geht zeige ich euch in diesem Artikel. Was ist OAuth2? OAuth steht für "Open Authorization" und ist ein offenes Standard-Protokoll zur sicheren Autorisierung von APIs. OAuth2 ist die überarbeitete Version von OAuth, welche die ursprüngliche Version häufig abgelöst hat. Mit OAuth2 können Endbenutzer einer Anwendung den Zugriff auf ihre Daten, bereitgestellt durch einen anderen Dienst, erlauben. Insbesondere im Kontext von Smartphone-Apps hat sich OAuth schnell durchgesetzt. Weiterführende Informationen zu OAuth2 findet ihr hier: https://www.ionos.de/digitalguide/server/sicherheit/was-ist-oauth/ OAuth2 API konsumieren Wie man mit Spring RestTemplate und WebClient REST-APIs aufruft, habe ich bere