Management Endpoints
The management features described in this section are experimental and can change in future releases.
nevisFIDO provides two management endpoints — liveness and readiness — that you can use to detect the current state of the instance. These can, for example, be used to integrate with Kubernetes container probes.
Management Server Type
The management endpoints can be served by two different server implementations, controlled by the management.healthchecks.type property. Only one server is active at a time. The custom type is a lightweight standalone HTTP server that runs independently of the Spring Boot Actuator, allowing it to serve health responses even if the embedded application server is in a degraded state. The custom type is the default and recommended value. The spring-boot type uses the embedded Spring Boot Actuator.
Health Indicators
The following list describes the indicators that are currently available for readiness checks. For the overall readiness result, a single component with state DOWN makes the overall state DOWN. States such as UNKNOWN and OUT_OF_SERVICE do not by themselves switch the overall state to DOWN; if no component is DOWN, the overall state remains UP (see also the Response Examples).
ping- Availability: available when the application configuration is syntactically valid.
- Purpose: checks basic liveness of the FIDO protocol application context.
- Possible states:
UP: the application context handling FIDO protocol requests is up and running.
database- Availability: available when a SQL session repository is configured.
- Purpose: checks SQL database connectivity.
- Possible states:
UP: SQL connection is valid.DOWN: SQL connection check fails or throws an error.
mds3- Availability: available for FIDO2 when MDS3 is configured.
- Purpose: checks MDS3 metadata cache validity and freshness.
- Possible states:
UP: metadata cache is valid (initialized and not expired).OUT_OF_SERVICE: cache expired, but metadata was initialized before.DOWN: metadata cache was never initialized.
androidAttestationKeyRevocation- Availability: available for FIDO UAF.
- Purpose: checks whether Android attestation CRL data is present and fresh.
- Possible states:
UP: CRL data is present and within freshness threshold.DOWN: CRL was not downloaded or is outdated.
fcm- Availability: available for FIDO UAF when an FCM dispatcher is configured.
- Purpose: checks Firebase Cloud Messaging health.
- Possible states:
UP: FCM health check succeeds.UNKNOWN: FCM dispatcher/client is not ready, not configured, or cannot be validated yet.
Configuration Properties
management.server.port- Mandatory: no
- Type: Integer
- Default value:
9089 - Description: Port for the management server. Currently only HTTP is supported.
management.healthchecks.enabled- Mandatory: yes
- Type: Boolean
- Default value:
false - Description: Enables or disables the management endpoints.
management.healthchecks.type- Mandatory: no
- Type: String
- Default value:
custom - Description: Server implementation to use. Only one server is active at a time.
custom: uses a lightweight custom HTTP server that runs independently of the Spring Boot Actuator — this is the default value and recommended setup.spring-boot: uses the embedded Spring Boot Actuator management server.
management.healthchecks.ignore-indicators- Mandatory: no
- Type: List of Strings
- Default value: not set (all available indicators are included)
- Description: List of health indicator names to exclude from the readiness check. The main purpose of this property is to exclude unwanted indicators, for example third-party services that are temporarily unavailable but outside the operator's control.
Configuration Examples
Using the custom server type (default), excluding the fcm indicator:
management:
server:
port: 9089
healthchecks:
enabled: true
type: custom
ignore-indicators:
- fcm
Using the spring-boot server type, excluding the fcm indicator:
management:
server:
port: 9089
healthchecks:
enabled: true
type: spring-boot
ignore-indicators:
- fcm
Liveness Endpoint
The liveness endpoint informs whether the server is up and running. Note that the server can be up and running but not ready to properly handle requests (for instance because of a misconfiguration).
| Description | Value |
|---|---|
| Default URL | http://hostname:9089/nevisfido/liveness |
| Request HTTP method | GET |
| Response content-type | application/vnd.spring-boot.actuator.v3+json |
| Response body | {"status":"UP"} |
| HTTP status code | 200 (OK) |
Readiness Endpoint
The legacy endpoint /nevisfido/health is deprecated. Use /nevisfido/readiness instead.
Both server types also expose the legacy /nevisfido/health endpoint, which shows all registered health indicators and ignores the ignore-indicators configuration.
The readiness endpoint informs whether the server is ready to handle requests.
Both server types expose the readiness endpoint at the same URL, with the same response format and HTTP status codes.
| Description | Value |
|---|---|
| Default URL | http://hostname:9089/nevisfido/readiness |
| Request HTTP method | GET |
| Response content-type | application/vnd.spring-boot.actuator.v3+json |
| Response body if nevisFIDO is ready | JSON object with status: UP and per-indicator components |
| HTTP status code if nevisFIDO is ready | 200 (OK) |
| Response body if nevisFIDO is not ready | JSON object with status: DOWN and per-indicator components |
| HTTP status code if nevisFIDO is not ready | 503 (Service Unavailable) |
Response Examples
Example response when all indicators are healthy:
{
"status": "UP",
"components": {
"androidAttestationKeyRevocation": {
"status": "UP"
},
"database": {
"status": "UP"
},
"fcm": {
"status": "UP"
},
"mds3": {
"status": "UP"
},
"ping": {
"status": "UP"
}
}
}
Example response when the fcm indicator is UNKNOWN — the overall status remains UP because UNKNOWN is not treated as a failure. Only a DOWN indicator causes the overall status to be DOWN:
{
"status": "UP",
"components": {
"androidAttestationKeyRevocation": {
"status": "UP"
},
"fcm": {
"status": "UNKNOWN",
"details": {
"message": "FCM dispatcher not configured yet"
}
},
"ping": {
"status": "UP"
}
}
}
Example response when the database indicator is DOWN — the overall status is DOWN:
{
"status": "DOWN",
"components": {
"androidAttestationKeyRevocation": {
"status": "UP"
},
"database": {
"status": "DOWN",
"details": {
"error": "Unable to acquire JDBC connection"
}
},
"ping": {
"status": "UP"
}
}
}