Ukážková implementácia IAM STS postavená na kvalitných a overených open-source riešeniach kompatibilná s aktuálnou IAM system-to-system integráciou (SAML 2.0) na portáli ÚPVS (slovensko.sk)
Technický popis s odôvodnením: Stratégia odľahčenia IAM - Dedikovaný STS pre integrácie
- Kompatibilné so súčasným ÚPVS IAM pre system-to-system integrácie (dokáže spracovať rovnaký request a vráti kompatibilný response)
- Ukážka škálovateľného úložiska pre klúče (redis)
- Dockerfile pre nasadenie a horizontálne škálovanie v modernom CI/CD prostredí
- Žiadne uzavreté technológie (všetko opensource a voľné licencie)
- EUPL licencia (ako vyžaduje § 15 ods. 2 písm. d) bod 1 zákona č. 95/2019 Z. z.)
- Nestojí to 17 miliónov eur
- Java
- Spring Boot - aplikačný framework
- Apache CXF - WS-Trust a WS-Security implementácia
- Redis - allowlist certifikátov (SHA-256 digest verejného kľúča)
- Maven - build
- Docker - kontajnerizácia
Spring Boot aplikácia s Apache CXF (WS-Trust/WS-Security). Prijíma a overuje podpísané SOAP požiadavky, overuje certifikát cez Redis a vracia SAML assertion.
Komponenty: STSApp (entry point), STSConfiguration (konfigurácia), AddUPVSSamlAssertionsHandler (SAML atribúty), RedisCertValidator (certifikáty)
# Kompilácia
mvn clean compile
# Balenie do JAR
mvn clean package -DskipTests
# Spustenie
mvn spring-boot:run- Spustenie služby
docker compose up
- Povolenie klúča so serial number, ktorý je v ukážkovom requeste
sts-request.xml.
docker exec -it sts-redis redis-cli SET cert:digest:930c212a36b9c534abe5456e5e97f35653918545744eaf147d4718051210cc30 "1"- Test request na STS službu
curl -X POST http://localhost:8080/services/STS -d @sts-request.xml- Zmazanie certifikátu z Redis
docker exec -it sts-redis redis-cli DEL cert:digest:930c212a36b9c534abe5456e5e97f35653918545744eaf147d4718051210cc30- Hardcoded heslá - Keystore password je "changeit"
- Timestamp strictness - Vypnuté pre debugovanie (TIMESTAMP_STRICT=false)
- Hardcoded dáta - SAML atribúty obsahujú testovacie dáta
- Replay cache - Aktuálna implementácia nie je vhodná pre multi-instance nasadenie
- Zmeniť hardcoded keystore password
- Implementovať LDAP/Redis integráciu pre reálne dáta
- Spraviť replay cache pre multi-instance scaling
- Povoliť TIMESTAMP_STRICT v produkcii
Tento projekt je licencovaný pod EUPL-1.2 (European Union Public Licence 1.2).