This is a distributed audit architecture for workflows.
AuditProject is a proof of concept for a distributed architecture designed for collaborative generation of workflow audit trails. We simulate a linear topology in which participants exchange messages, report encrypted audit records, and cooperate to construct audit trails.
This is a Spring-boot-Application. You can test it by executing the maven wrapper to create the jar files.
cd AuditProject
./mvnw package
Three types of modules are part of this project:
- common: contains the common classes shared among modules
- node: is the special node in charge of audit trail distribution, the audit server/
- clients: Each one is a participant in the workflow. They report audit records to the audit server, challenge the authenticity of each other's reported data and of the audit server.
Run the audit server with the following command.
java -jar node/target/node-0.0.1-SNAPSHOT.jar
This would start the server on port 8080. Check http://localhost:8080/address and http://localhost:8080/transaction before you proceed to the next step.
cd client/target
java -jar client-0.0.1-SNAPSHOT.jar
Each client has a certificate, and would use its public key to register with the audit server. The Audit server verifies each participant's certificate, and creates an address for each participant that is used to publish audit records. The audit server verifies the signature of each participant over the encrypted payload prior to listing the record on http://localhost:8080/transaction.
http://localhost:8080/address now has the generated addresses of the five participants. This endpoint can be disabled if the participants are not meant to know each other.
Here is an explanation for the structure of our audit trail, and on how to recursively decode it and reproduce the exchanged message with a representation of the topology.