2026-06-30 17:53:01 +02:00
2026-06-30 17:53:01 +02:00
2026-06-30 17:38:52 +02:00
2026-06-30 17:38:52 +02:00
2026-06-30 17:45:58 +02:00
2026-06-30 17:48:22 +02:00

adfs-auth-ms

Jednoduchy REST wrapper nad puvodni logikou AdfsAuthMediator.

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

Ostatni:

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

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.
Description
No description provided
Readme 291 KiB
Languages
Java 100%