adfs-auth-ms/README.md

2.3 KiB

adfs-auth-ms

Jednoduchy REST wrapper pro transparentní proxy volání s ADFS autentizací.

Co dela

  • nacte konfiguraci z YAML
  • vytvori client_assertion (JWT) podepsany privatnim klicem
  • zavola ADFS token endpoint pomoci private_key_jwt autentizace
  • slouzi jako transparentni proxy: prepisuje prichozi pozadavky na backend a pridava Authorization: Bearer <token>
  • automaticky rotuje clientIds pri obdrzeni HTTP 429 (throttling) od backendu
  • drzi access token v pametove cache, dokud nevyprsi
  • vystavi endpointy /process, /health

Konfigurace

Konfigurace je v config/config.yaml nebo ve classpath config.yaml.

Sekce adfs:

  • tokenUrl: URL ADFS token endpointu
  • audience: Audience pro JWT (vetsinou stejne jako tokenUrl)
  • resource: Identifier resourse (napr. urn:kamma:api)
  • clientIds: Seznam povolenych Client ID pro rotaci
  • certificate: Base64 encoded X509 certifikat (pro ADFS)
  • privateKey: Base64 encoded private key (pro podpis JWT)
  • proxyHost, proxyPort, proxyUser, proxyPassword: Volitelna proxy pro volani ADFS
  • trustStore: Cesta k JKS truststoru (pro SSL důvěru k ADFS a backendu)
  • trustStorePassword: Heslo k truststoru

Ostatni:

  • backendUrl: Cilkova URL backendu, kam se proxy forwarduje
  • server.port: Port, na kterem microservice posloucha (default 8080)

TrustStore

Aplikace používá vlastní TrustStore pro SSL spojení. Do TrustStoru byly přidány:

  • Certifikát ADFS (přímo z konfigurace)
  • Root autorita Let's Encrypt
  • Všechny standardní veřejné autority ze systému

Soubor s TrustStorem je nakonfigurován v config.yaml pod klíčem trustStore.

Spusteni

mvn package
java -jar target/adfs-auth-ms-1.0-SNAPSHOT.jar

API

  • GET /health - Kontrola stavu sluzby
  • ANY /process/** - Proxy endpoint, ktery prida ADFS token a forwarduje na backendUrl

Ukázka volání

Pokud je backendUrl nastaven na https://calc.kamma.cz/add, volání přes proxy vypadá takto:

# Volání sečtení x=10 a y=20 přes lokální proxy
curl "http://localhost:8080/process/add?x=10&y=20"

Proxy automaticky:

  1. Získá platný token z ADFS (pomocí jedné z nakonfigurovaných identit).
  2. Přidá hlavičku Authorization: Bearer <token>.
  3. Přepošle dotaz na backend.
  4. Vrátí odpověď z backendu zpět klientovi.