{"id":15103288,"url":"https://github.com/butzee/quarkus_mtls_test","last_synced_at":"2026-01-30T13:03:56.424Z","repository":{"id":242761401,"uuid":"810000205","full_name":"butzee/Quarkus_mtls_test","owner":"butzee","description":"This project demonstrates a proof-of-concept (POC) microservice architecture using Kafka for secure communication and computation within a Kubernetes cluster. The architecture simulates a cloud environment and secure computing on sensitive data, specifically for calculating the premium value of car insurance.","archived":false,"fork":false,"pushed_at":"2024-06-29T17:58:18.000Z","size":74199,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-21T07:15:36.559Z","etag":null,"topics":["certificates","cpp","kafka","microsoft-seal","mtls","quarkus"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/butzee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-03T21:28:13.000Z","updated_at":"2024-06-29T17:58:22.000Z","dependencies_parsed_at":"2025-02-08T03:42:02.200Z","dependency_job_id":null,"html_url":"https://github.com/butzee/Quarkus_mtls_test","commit_stats":null,"previous_names":["butzee/quarkus_mtls_test"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/butzee%2FQuarkus_mtls_test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/butzee%2FQuarkus_mtls_test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/butzee%2FQuarkus_mtls_test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/butzee%2FQuarkus_mtls_test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/butzee","download_url":"https://codeload.github.com/butzee/Quarkus_mtls_test/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239970678,"owners_count":19727014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["certificates","cpp","kafka","microsoft-seal","mtls","quarkus"],"created_at":"2024-09-25T19:23:12.614Z","updated_at":"2026-01-30T13:03:56.387Z","avatar_url":"https://github.com/butzee.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Project/POC: Secure Microservices with Kafka\n\nThis project demonstrates a proof-of-concept (POC) microservice architecture using Kafka for secure communication and computation within a Kubernetes cluster. The architecture simulates a cloud environment and secure computing on sensitive data, specifically for calculating the premium value of car insurance.\n\n### Table of Contents\n1. [Architecture Overview](#architecture-overview)\n2. [Prerequisites](#prerequisites)\n3. [Usage](#usage)\n4. [PowerShell Functions](#powershell-functions)\n5. [Detailed Steps](#detailed-steps)\n\n### Architecture Overview\n\nThe architecture consists of four microservices (a, b, c, and d), with the following deployment and technology details:\n\n- **Microservices a, b, and c**: Deployed inside a Kubernetes cluster (public cloud) and accessible via NodePort configuration.\n- **Microservice d**: Running on-premises.\n\n#### Technologies Used\n\n- **Microservices a and b**: Built with Quarkus.\n- **Microservices c and d**: Built with C++ and the SEAL library.\n- **Secure Communication**: Inside the Kubernetes cluster using mTLS.\n- **Data Communication**: Via Kafka topics.\n\n### Microservices Details\n\n**Microservice A**:\n- **Endpoint**: `/endpoint` - Accepts a JSON array with SealData objects containing the following fields: Parameters, RelinKeys, GaloisKeys, EncryptedInput, EncryptedPricing, and UniqueId.\n- **Functionality**: Produces SealData objects to the `topic-seal-data` Kafka topic.\n\n**Microservice B**:\n- **Endpoints**:`/getId` - Accepts a uniqueId as a string and searches for an encrypted result value with the corresponding uniqueId, then returns it.\n- **Functionality**: Consumes SealData objects from the `topic-encrypted-premium` Kafka topic.\n\n**Microservice C**:\n- **Functionality**:\n  - Listens to the `topic-seal-data` Kafka topic.\n  - Computes values using encrypted data from the SealData objects.\n  - Produces results to the `topic-encrypted-premium` Kafka topic.\n\n**Microservice D**:\n- **Functionality**:\n  - Interactive application for creating Seal context with a unique ID, required SEAL parameters, and values.\n  - Takes user input for premium value computation.\n  - Sends SealData objects with a unique ID to the `/endpoint` of microservice A.\n  - Makes GET requests to the `/getId` endpoint of microservice B with the unique ID to retrieve and decrypt the computed premium value.\n\n### Workflow\n\n1. **Microservice D**:\n   - Creates Seal context and SealData objects with unique IDs.\n   - Sends SealData to microservice A via `/endpoint`.\n   \n2. **Microservice A**:\n   - Receives SealData and produces it to the `topic-seal-data` Kafka topic.\n   \n3. **Microservice C**:\n   - Listens to `topic-seal-data`, processes encrypted values, and computes the required data.\n   - Produces results to the `topic-encrypted-premium` Kafka topic.\n   \n4. **Microservice B**:\n   - Consumes results from `topic-encrypted-premium`.\n   - Endpoint `/getId` allows querying the results by unique ID.\n\n### Prerequisites\n\nEnsure you have the following installed and running:\n- Docker Desktop and Docker Compose\n- kind (Kubernetes in Docker)\n- kubectl\n- Helm\n- Java 11 or higher\n- Quarkus 2.15.3\n- Maven\n\n### Usage\n\nExecute the following PowerShell script to manage and execute the project:\n\n```powershell\nStart-ContainerOrCluster.ps1\n```\n\nThis script manages the project fully. Start it and beginn with \"Get Information about the Project and Prerequisites\".","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbutzee%2Fquarkus_mtls_test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbutzee%2Fquarkus_mtls_test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbutzee%2Fquarkus_mtls_test/lists"}