-
Notifications
You must be signed in to change notification settings - Fork 7
FC Administration Guide
Scope — this page covers day-to-day operator tasks: realm and user bootstrap, role assignment, runtime health checks, log-level tuning, and the Helm-based production deployment. For configuration parameters see Installation & Configuration Guide. For the deployment view (Kubernetes topology, storage layout) see the arc42 document at
github.com/eclipse-xfsc/docs/federated-catalogue/src/docs/architecture/.
The Federated Catalogue authenticates against an external Keycloak realm (default name: gaia-x). The realm definition
shipped with the docker-compose stack lives under
/keycloak/realms — see its README for
the import procedure.
Default admin credentials for the local Keycloak: admin / admin. Change these before any non-local deployment.
Admin console URL (local stack): http://key-server:8080/admin — requires the 127.0.0.1 key-server line in
/etc/hosts.
The FC and the demo portal consume two role names from the gaia-x realm:
| Role | Purpose |
|---|---|
Ro-MU-CA |
Catalogue user — can register, query, and manage assets through the API and demo portal. |
ADMIN_ALL |
Catalogue administrator — additionally has access to the admin dashboard endpoints (graph rebuild, backend switch, file-store inspection, trust-framework family/base-class/bundle-config toggles and overrides, schema-module toggles). |
- Log into the Keycloak admin console.
- Select the
gaia-xrealm. - Users → Add user — fill username, email, first/last name. Save.
- Credentials tab → set a password. Disable "Temporary" if you do not want a forced reset on first login.
-
Role mapping → assign
Ro-MU-CA(standard user) and/orADMIN_ALL(administrator).
The FC server is registered as the OAuth2 client federated-catalogue in the gaia-x realm. The client secret must
match what is supplied to the FC via the KEYCLOAK_CREDENTIALS_SECRET environment variable (or
keycloak.credentials.secret in application.yml / Spring profile).
For local docker-compose runs, both sides read the secret from docker/.env (or docker/dev.env). Rotate the secret by
regenerating it in Keycloak and updating the env file before restarting fc-server.
Keycloak Clients → federated-catalogue → Credentials tab
The repository ships three pre-configured realm exports, one per target environment:
| Directory | Target environment |
|---|---|
keycloak/realms/dev/ |
Local development |
keycloak/realms/staging/ |
Staging |
keycloak/realms/prod/ |
Production |
The KC_REALM_ENV environment variable selects which one Keycloak imports at startup.
Use the dev/ realm only for local docker-compose runs; replace its placeholder secrets before promoting any realm
export to a shared deployment.
The FC demo portal embeds the Keycloak Admin Console in an iframe for the user-management page. By default, modern
browsers block this through the X-Frame-Options header and the Content-Security-Policy frame-ancestors directive.
To allow the embedding, relax both headers in the master and gaia-x realms (Realm Settings → Security
Defenses, or directly in the realm JSON):
| Header | Required change |
|---|---|
xFrameOptions |
Remove (set to the empty string ""). |
contentSecurityPolicy |
Add your portal origin to the frame-ancestors list. |
The bundled realm files include preliminary values so the demo portal works out of the box; tighten these for production.
The demo portal auto-derives the Keycloak Admin Console URL from the catalogue's configured Keycloak server and realm. When Keycloak is reachable on a different hostname from the FC (for example, the FC talks to Keycloak in-cluster but the browser hits an ingress), set the explicit override property documented in the Installation & Configuration Guide.
The FC exposes the following Spring Actuator endpoints by default:
| Endpoint | Purpose |
|---|---|
/actuator/health |
Liveness / readiness probe. Detail level is shown only when the caller is authorized (management.endpoint.health.show-details: when_authorized). |
/actuator/info |
Build info and version metadata. |
/actuator/graph-rebuild |
FC-specific — triggers a graph store rebuild from the metadata store. Requires the ADMIN_ALL role. |
Additional actuator endpoints (/metrics, /prometheus, /loggers, …) can be enabled by extending
management.endpoints.web.exposure.include — they are off by default.
Application loggers can be raised or lowered without a restart via environment variables, e.g.:
LOGGING_LEVEL_EU_XFSC_FC=TRACE
LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_WEB=INFO
Or via the actuator /loggers endpoint when it is exposed and the caller holds ADMIN_ALL.
The FC supports two graph backends (Fuseki by default, Neo4j optionally), resolved at startup by RoutingGraphStore.
The active backend can be switched at runtime via the admin dashboard's Switch Backend action — this performs an
in-process driver swap and persists the choice as graphstore.preferred.backend so the next boot uses it.
A pre-flight probe verifies reachability of the target backend before the switch is committed. If a backend is empty
after a switch, use the /actuator/graph-rebuild endpoint (or the dashboard's rebuild action) to repopulate it from the
metadata store.
The official Helm chart is at
deployment/helm/fc-service.
See its README.md for the values reference.
Minimum operator checklist before promoting to a shared environment:
- Override
spring.datasource.passwordwith a Kubernetes secret. - Override
graphstore.password(Neo4j) with a Kubernetes secret if Neo4j is selected. - Override
keycloak.credentials.secretviaKEYCLOAK_CREDENTIALS_SECRETfrom a secret. - Pin
federated-catalogue.enabled-trust-frameworks(e.g.gaia-x) to the bundle(s) you intend to enforce. - Decide which verification steps to enable (
federated-catalogue.verification.*) — all signature checks are off by default. - Configure
federated-catalogue.query.partnersif this instance participates in distributed query. - Configure
publisher.impl/subscriber.impl(ces,nats, ornone) according to your event topology.
| Symptom | First thing to check |
|---|---|
/actuator/health returns DOWN
|
Check Postgres connectivity (spring.datasource.url) and the active graph store URI. |
JWT auth fails with 401
|
issuer-uri matches your Keycloak realm exactly; client secret matches Keycloak; clock skew between FC and Keycloak under 60s. |
| SDs/assetsare accepted but not searchable | The graph store may be empty or out of sync — call /actuator/graph-rebuild. |
| Trust framework rejects a credential | Confirm federated-catalogue.enabled-trust-frameworks includes the framework family and that the bundle's trust-anchor URL is reachable from the pod. |
| Compliance call hits an unexpected endpoint | A runtime override may be active. Call GET /admin/trust-frameworks and inspect each bundle's effectiveConfig / overriddenFields; revert a single field via PATCH /admin/trust-frameworks/bundles/{bundleId} with the field set to JSON null, or wipe all overrides for the bundle via DELETE /admin/trust-frameworks/bundles/{bundleId}. |
- Catalogue Architecture
- Catalogue Security Concept
- Catalogue REST API
- Catalogue Build Procedures
- Installation & Configuration Guide
- Administration Guide
- Test Procedures and Results
- Performance Tests
- Penetration Tests
- EDC Connector Integration Approaches
- Related Tools
- XFSC Catalogue Developers' Community Call Meetings