Auth-Service
Zuständig für die Authentifizierung und Verwaltung der Rechte der User des Systems.
Der Service stellt auch die Loginmaske zur Verfügung. Dazu wird Freemarker verwendet. Mittels wro4j werden JavaScript Ressource (jquery und Bootstrap) zur Verfügung gestellt. Im Projekt sind zusätzliche Ressourcen im Ordner resources-non-filtered
hinterlegt.
Abhängigkeiten
- Infomanagement-Service
Datenmodell
IMPORTANT
Der Benutzername liegt in der Datenbank nur verschlüsselt vor.
Prozesse
Auswahl Loginmaske
Login
Damit ein Benutzer sich anmelden darf, müssen zum einen die Logindaten entsprechend LDAP korrekt sein. Des Weiteren müssen folgende Regeln beachtet werden:
- Ist der Nutzer gesperrt?
- Falls der Nutzer gesperrt ist, muss die Sperre abgelaufen sein
- darf der Nutzer sich nur innerhalb einer bestimmten Zeitspanne einloggen wird der Zeitraum validiert
- erfolgte der Login über eine erlaubte Anwendung (Prüfung der clientID)
NOTE
Ein erfolgreicher Login setzt alle vorherigen Loginversuche zurück
Erstellung der Benutzer
IMPORTANT
Damit Benutzer angelegt werden können muss die definierte Authority vorhanden sein die den Benutzern zugewiesen werden soll.
NOTE
Wird der Service mit dem Profil db-dummydata
gestartet werden Testdaten erzeugt, welche die notwendige Authority umfasst. Im regulären Betrieb werden die Authority sowie Permission mittels Skript erzeugt.
Der Service erzeugt für eine Liste an Wahlbezirken eines Wahltermins (wahltagID
) Benutzer. Dabei werden der Benutzername und die PIN zufällig erzeugt.
Die Benutzer die zuvor für den Wahltermin vorhanden waren werden gelöscht.
Konfigurationsparameter
Alle Konfigurationsparameter beginnen mit dem Prefix service.config
Name | Beschreibung | Default |
---|---|---|
crypto.encryptionPrefix | String vor dem verschlüssten Wert. Auf diese Weise sind verschlüsselte Werte erkennbar | ENCRYPTED: |
crypto.key | Schlüssel zum ver- und entschlüsseln | |
falscheLoginZeitstrafe | Zeit in Minuten für eine Sperrung | 10 |
maxLoginAttempts | Maximale Anzahl an Fehlersuchen bis der Account gesperrt wird. | 5 |
clients.infomanagement.basepath | URL zum Infomanagement-Service | http://localhost:39146 |
clients.infomanagement.configkey.welcomeMessage | Schlüssel für Konfiguration der Willkommensnachricht | WILLKOMMENSTEXT |
clients.infomanagement.configkey.fruehesterLogin | Schlüssel für Konfiguration des frühesten Zeitpunktes für Login | FRUEHESTE_LOGIN_UHRZEIT |
clients.infomanagement.configkey.spaetesterLogin | Schlüssel für Konfiguration des spätesten Zeitpunktes für Login | SPAETESTE_LOGIN_UHRZEIT |
clients.infomanagement.dateformat | Format des Datums wie es vom Infomanagement-Service kommt | dd.MM.yyyy HH:mm |
serviceauth.welcomemessage.default | Standard Willkommensnachricht falls die definierte Willkommensnachricht nicht geladen werden kann | Willkommen zur Wahl! |
ldap.userDn | Username zur Authentifizierung am LDAP-Server | |
ldap.userDnPassword | Passwort zur Authentifizierung am LDAP-Server | |
ldap.contextSource | Url zum LDAP-Server, z.B. ldaps://my-ldap-server.de:636 | |
ldap.userSearchBase | Basispfad für Suche, z.b. o=myOrg,c=de | ou=people |
ldap.userSearchFilter | Filter für Suche, z.B. (uid={0}) | uid={0} |
oauth2.clients.wahllokalgui.id | ID des Client der Wahllokal-Anwendung | wahllokalgui |
oauth2.clients.admingui.id | ID des Client der Admintool-Anwendung | admingui |
oauth2.jwk.rsa.init.seed | Seed für RSA-Schlüsselpaar. Gleiche Seeds sorgen für gleiche Ergebnisse | |
rsa.rsa-key-setting | Enum (GENERATED_KEY,STATIC_KEY), das bestimmt welcher RSA-Key verwendet werden soll | |
rsa.public-key | Verwendeter Public-Key | |
rsa.private-key | Verwendeter Private-Key |