Audit
This feature provides audit logging for the Liveness Check Proxy in the database. For more detailed developer documentation see auditing library documentation.
The audit log should be used to investigate specific liveness verification processes. It should not be used for reporting, as it is not optimized for this purpose and would negatively impact performance.
A value in the audit_log.audit_type column is used to categorize each audit log entry according to the scope of the operation.
The following values are used:
livenessCheck
Common parameters
These parameters are used across event types:
| Parameter | Description |
|---|---|
userId |
The internal user ID provided by the client in REST API endpoints. |
externalUserId |
The user ID registered in Liveness Verification Provider. |
errorCode |
The Liveness Verification Provider error code if the operation is not successful. |
errorDescription |
The Liveness Verification Provider error description if the operation is not successful. |
result |
Result of the verification operation performed by the Liveness Verification Provider. |
reason |
Reason for the result provided by the Liveness Verification Provider. |
Subject ID mapping
The audit_log.subject_id database column is populated only when a value is available.
When the POST /liveness/init REST API endpoint is called, the value is returned by the Liveness Verification Provider. For iProov, audit_log.subject_id is set to the token value.
For Innovatrics, no reference is returned during initiation, so audit_log.subject_id is not set for this endpoint.
When the POST /liveness/verify REST API endpoint is called, the value is taken from the livenessRecord.reference field in the request body.
Event type livenessCheck
All events produced by the Liveness Check Proxy are of type livenessCheck.
Message Enrollment cleanup for userId={userId}, reason={cleanupReason}
The POST /liveness/init REST API endpoint was called. The Liveness Check Proxy contains an internal enrollment (a record for the given userId in the lcp_enrollment database table),
but the user does not exist in the Liveness Verification Provider. As a self-recovery mechanism, the internal enrollment is removed so that the state is synchronized with the provider. Another call
to the endpoint then creates a new enrollment, both internally and in the provider.
This message is used only by the iProov provider.
| Parameter | Description |
|---|---|
cleanupReason |
Reason for removing internal enrollment in Liveness Check Proxy. |
Message User with userId={userId} will be verified by matching this trusted image.
Trusted image fetched from the User Details Provider.
For the iProov provider, this is logged during enrollment when the POST /liveness/init REST API endpoint was called.
For the Innovatrics provider, this is logged when the POST /liveness/verify REST API endpoint was called.
| Parameter | Description |
|---|---|
trustedImage |
Trusted image in base64 format to be used for user verification. |
Message User with userId={userId} recorded probe image.
The probe image associated with the POST /liveness/verify REST API endpoint call.
For the iProov provider, the probe image is informative only. It is the frame returned in the token validation response and does not affect the verification result.
For the Innovatrics provider, the probe image is the face image received in the verification request and is used for the actual user verification.
| Parameter | Description |
|---|---|
probeImage |
Probe image in base64 format. |
Message iProov verifyLiveness failed for userId={userId}.
The POST /liveness/verify REST API endpoint was called. An error occurred while calling the iProov Liveness Verification Provider — the verification was not performed.
This message is used only by the iProov provider.
Message Probe image is not available in validation response for userId={userId}.
The POST /liveness/verify REST API endpoint was called. The Liveness Verification Provider returned a response with a validation result. The response does not contain a probe image.
This message is used only by the iProov provider.
Message User userId={userId} will be verified by matching previously uploaded trusted image.
The POST /liveness/init REST API endpoint was called. The internal enrollment in the Liveness Check Proxy already exists (so the enrollment in the Liveness Verification Provider should also exist)
and already contains the latest trusted image — there is no newer image in the User Details Provider.
This message is used only by the iProov provider.
Message iProov enroll failed for userId={userId}.
The POST /liveness/init REST API endpoint was called.
This message is used only by the iProov provider.
Message iProov generateVerificationToken failed for userId={userId}.
The POST /liveness/init REST API endpoint was called. There was an error when communicating with the Liveness Verification Provider for generating a verification token.
This message is used only by the iProov provider.
Message iProov generateVerificationToken succeeded for userId={userId}.
The POST /liveness/init REST API endpoint was called. The Liveness Verification Provider returned a verification token.
This message is used only by the iProov provider.
Message iProov deleteUser failed for userId={userId}.
The POST /liveness/init REST API endpoint was called. There was an error when communicating with the Liveness Verification Provider for deleting the enrolled user.
This message is used only by the iProov provider.
Message Received request to initiate liveness verification from userId={userId}.
The POST /liveness/init REST API endpoint was called. This message is logged at the beginning of the action.
Message Liveness verification initiated, userId={userId}.
The POST /liveness/init REST API endpoint was called. The initiation operation was successfully performed by the Liveness Verification Provider.
Message Received request to verify liveness from userId={userId}.
The POST /liveness/verify REST API endpoint was called. This message is logged at the beginning of the action.
Message Liveness verification accepted for userId={userId}.
The POST /liveness/verify REST API endpoint was called. The Liveness Verification Provider returned a response with an accepted result — the verification passed.
Message Liveness verification rejected for userId={userId}: {rejectReason}
The POST /liveness/verify REST API endpoint was called. The Liveness Verification Provider returned a response with a rejected result — the verification did not pass.
| Parameter | Description |
|---|---|
rejectReason |
Details of the rejection result. |
Message Verification failed for userId={userId}: {errorMessage}.
The POST /liveness/verify REST API endpoint was called. An error occurred while calling the Liveness Verification Provider — the verification was not performed.
| Parameter | Description |
|---|---|
errorMessage |
Details of the error. |
Example of an audit log
Example of the events logged for successful verification with a new enrollment. The events are listed with the newest first:
audit_log_id,application_name,audit_level,audit_type,timestamp_created,message,exception_message,stack_trace,param,calling_class,thread_name,version,build_time,subject_id
253f46d6-786c-449a-96c1-1030ef8afa16,liveness-check-proxy,INFO,livenessCheck,2026-06-10 09:23:32.170000,Liveness verification accepted for userId=4cefb38d-fc82-4acc-b2c2-1436d4cbb7b3.,,,"{""userId"":""4cefb38d-fc82-4acc-b2c2-1436d4cbb7b3""}",com.wultra.app.livenesscheckproxy.audit.AuditService,http-nio-8092-exec-3,1.3.0-SNAPSHOT,2026-06-10 09:22:19.371000,31706131726336496d655177346e55503279616b69547344446e5258684c7542
f2018c8d-5859-4b37-8161-22a0e40edc80,liveness-check-proxy,INFO,livenessCheck,2026-06-10 09:23:32.170000,Probe image is not available in validation response for userId=4cefb38d-fc82-4acc-b2c2-1436d4cbb7b3.,,,"{""userId"":""4cefb38d-fc82-4acc-b2c2-1436d4cbb7b3"",""externalUserId"":""589bec55-7ca8-4e21-b04d-46d2d33633fb"",""result"":true,""reason"":""Please Keep Still""}",com.wultra.app.livenesscheckproxy.audit.AuditService,http-nio-8092-exec-3,1.3.0-SNAPSHOT,2026-06-10 09:22:19.371000,31706131726336496d655177346e55503279616b69547344446e5258684c7542
8b9420bb-d03a-46e3-80b5-a5014019aace,liveness-check-proxy,INFO,livenessCheck,2026-06-10 09:23:32.136000,Received request to verify liveness from userId=4cefb38d-fc82-4acc-b2c2-1436d4cbb7b3.,,,"{""userId"":""4cefb38d-fc82-4acc-b2c2-1436d4cbb7b3""}",com.wultra.app.livenesscheckproxy.audit.AuditService,http-nio-8092-exec-3,1.3.0-SNAPSHOT,2026-06-10 09:22:19.371000,31706131726336496d655177346e55503279616b69547344446e5258684c7542
f5c5220f-4e70-4c2e-b7f5-bd40afa8093d,liveness-check-proxy,INFO,livenessCheck,2026-06-10 09:23:25.650000,"Liveness verification initiated, userId=4cefb38d-fc82-4acc-b2c2-1436d4cbb7b3.",,,"{""userId"":""4cefb38d-fc82-4acc-b2c2-1436d4cbb7b3""}",com.wultra.app.livenesscheckproxy.audit.AuditService,http-nio-8092-exec-2,1.3.0-SNAPSHOT,2026-06-10 09:22:19.371000,31706131726336496d655177346e55503279616b69547344446e5258684c7542
b079a6aa-f598-4a4d-980e-8713623a60c0,liveness-check-proxy,INFO,livenessCheck,2026-06-10 09:23:25.644000,iProov generateVerificationToken succeeded for userId=4cefb38d-fc82-4acc-b2c2-1436d4cbb7b3.,,,"{""userId"":""4cefb38d-fc82-4acc-b2c2-1436d4cbb7b3"",""externalUserId"":""589bec55-7ca8-4e21-b04d-46d2d33633fb""}",com.wultra.app.livenesscheckproxy.audit.AuditService,http-nio-8092-exec-2,1.3.0-SNAPSHOT,2026-06-10 09:22:19.371000,
85d1ed98-b3dd-4a9e-93cc-f577a24675cd,liveness-check-proxy,INFO,livenessCheck,2026-06-10 09:23:25.257000,User userId=4cefb38d-fc82-4acc-b2c2-1436d4cbb7b3 will be verified by matching previously uploaded trusted image.,,,"{""userId"":""4cefb38d-fc82-4acc-b2c2-1436d4cbb7b3"",""externalUserId"":""589bec55-7ca8-4e21-b04d-46d2d33633fb""}",com.wultra.app.livenesscheckproxy.audit.AuditService,http-nio-8092-exec-2,1.3.0-SNAPSHOT,2026-06-10 09:22:19.371000,
f20775e9-bc3b-4558-bd19-735f2c3a6e56,liveness-check-proxy,INFO,livenessCheck,2026-06-10 09:23:25.200000,Received request to initiate liveness verification from userId=4cefb38d-fc82-4acc-b2c2-1436d4cbb7b3.,,,"{""userId"":""4cefb38d-fc82-4acc-b2c2-1436d4cbb7b3""}",com.wultra.app.livenesscheckproxy.audit.AuditService,http-nio-8092-exec-2,1.3.0-SNAPSHOT,2026-06-10 09:22:19.371000,