Skip to content

Ukážková implementácia IAM UPVS pre S2S integrácie postavená na opensource riešeniach.

License

Notifications You must be signed in to change notification settings

slovensko-digital/poc-iam

Repository files navigation

ÚPVS IAM STS (Security Token Service)

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

Hlavné funkcie

  • 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

Technológie

  • 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

Architektúra

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)

Inštalácia a spustenie

Maven

# Kompilácia
mvn clean compile

# Balenie do JAR
mvn clean package -DskipTests

# Spustenie
mvn spring-boot:run

Testovacia ukážka

  1. Spustenie služby
docker compose up
  1. 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"
  1. Test request na STS službu
curl -X POST http://localhost:8080/services/STS -d @sts-request.xml
  1. Zmazanie certifikátu z Redis
docker exec -it sts-redis redis-cli DEL cert:digest:930c212a36b9c534abe5456e5e97f35653918545744eaf147d4718051210cc30

Bezpečnostné upozornenia

⚠️ Toto je Proof of Concept:

  1. Hardcoded heslá - Keystore password je "changeit"
  2. Timestamp strictness - Vypnuté pre debugovanie (TIMESTAMP_STRICT=false)
  3. Hardcoded dáta - SAML atribúty obsahujú testovacie dáta
  4. Replay cache - Aktuálna implementácia nie je vhodná pre multi-instance nasadenie

TODOs

  • 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

Licencia

Tento projekt je licencovaný pod EUPL-1.2 (European Union Public Licence 1.2).

About

Ukážková implementácia IAM UPVS pre S2S integrácie postavená na opensource riešeniach.

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •