CaptchaService ist ein selbst gehosteter Microservice, der DSGVO-konforme Proof-of-Work-CAPTCHA-Challenges auf Basis der europäischen Open-Source-Bibliothek ALTCHA bereitstellt — die Bot-Schutzschicht vor den öffentlichen Zeitmanagementsystem- und eAppointment-APIs der Landeshauptstadt München.
Über das Projekt
CaptchaService wurde bei it@M als quelloffene Bot-Schutzschicht vor den öffentlichen Zeitmanagementsystem- und eAppointment-APIs der Landeshauptstadt München entwickelt — konkret zmscitizenview (die bürgerseitige Buchungsoberfläche) und zmscitizenapi (das REST-Backend für verfügbare Terminslots).
Über die Jahre durchlief das Team mehrere Ansätze, um automatisierte Scraper und Buchungs-Bots von diesen Endpunkten fernzuhalten: ein einfaches Eigenbau-CAPTCHA, anschließend kommerzielle proprietäre Dienste und schließlich ALTCHA — eine DSGVO-konforme, datenschutzfreundliche Proof-of-Work-Bibliothek aus Europa, ohne Cookies, ohne Tracking und ohne Drittanbieter-Aufrufe. Die Wahl einer quelloffenen, europäischen Bibliothek ist ein bewusster Beitrag zur digitalen Souveränität der öffentlichen Verwaltung.
CaptchaService kapselt ALTCHA in einem kleinen, mandantenfähigen Spring-Boot-Service mit adaptiver Schwierigkeitssteuerung. Eine Challenge wird angefordert, wenn Bürger*innen den Buchungsablauf öffnen; die verifizierte Payload wird anschließend benötigt, bevor Reservierungen oder scraping-ähnliche Lesezugriffe akzeptiert werden.
- Automatisierte Bots können verfügbare Terminslots nicht mehr kostengünstig enumerieren.
- Echte Nutzer*innen sehen nur einen nahezu unsichtbaren Proof-of-Work-Schritt — eine unauffällige „Ich bin kein Bot“-Checkbox.
- Über CaptchaService verlassen keine personenbezogenen Daten die Infrastruktur der Landeshauptstadt München.
- Breitere Abdeckung — im Zeitmanagementsystem-Terminvereinbarungsprozess sind jetzt alle Referate und Behörden abgedeckt.
- Leicht in allen Systemen wiederverwendbar.
- Sehr geringe Betriebskosten.

Technische Details
- Spring-Boot-Microservice mit REST-API (
/challenge,/verify) - Proof-of-Work-CAPTCHA via ALTCHA — keine Bilderrätsel
- Adaptive Schwierigkeitssteuerung basierend auf dem Anfrageverhalten pro Quell-IP
- Mehrmandantenfähigkeit mit eigenen Schlüsseln, Geheimnissen und Schwierigkeits-Maps pro Site
- PostgreSQL-Persistenz mit Flyway-Migrationen
- Health-Checks und Prometheus-Metriken über Spring Actuator
- Entwickelt mit Java 21 und Spring Boot 3.x nach der Referenzarchitektur der Landeshauptstadt München
- Entwicklerhandbuch und Quellcode

