{"id":20340390,"url":"https://github.com/toolisticon/keycloak-gdpr-module","last_synced_at":"2025-04-11T23:22:11.507Z","repository":{"id":39674232,"uuid":"172920951","full_name":"toolisticon/keycloak-gdpr-module","owner":"toolisticon","description":null,"archived":false,"fork":false,"pushed_at":"2023-12-15T15:04:56.000Z","size":111552,"stargazers_count":5,"open_issues_count":11,"forks_count":2,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2025-03-25T19:12:27.701Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/toolisticon.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","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},"funding":null},"created_at":"2019-02-27T13:29:43.000Z","updated_at":"2023-11-29T10:17:33.000Z","dependencies_parsed_at":"2023-12-15T15:43:11.112Z","dependency_job_id":null,"html_url":"https://github.com/toolisticon/keycloak-gdpr-module","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toolisticon%2Fkeycloak-gdpr-module","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toolisticon%2Fkeycloak-gdpr-module/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toolisticon%2Fkeycloak-gdpr-module/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toolisticon%2Fkeycloak-gdpr-module/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/toolisticon","download_url":"https://codeload.github.com/toolisticon/keycloak-gdpr-module/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248493133,"owners_count":21113201,"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":[],"created_at":"2024-11-14T21:21:35.795Z","updated_at":"2025-04-11T23:22:11.480Z","avatar_url":"https://github.com/toolisticon.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CI](https://github.com/toolisticon/keycloak-gdpr-module/actions/workflows/build.yml/badge.svg)](https://github.com/toolisticon/keycloak-gdpr-module/actions/workflows/build.yml)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=toolisticon_keycloak-gdpr-module\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=toolisticon_keycloak-gdpr-module)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=toolisticon_keycloak-gdpr-module\u0026metric=coverage)](https://sonarcloud.io/dashboard?id=toolisticon_keycloak-gdpr-module)\n[![Known Vulnerabilities](https://snyk.io/test/github/toolisticon/keycloak-gdpr-module/badge.svg)](https://snyk.io/test/github/toolisticon/keycloak-gdpr-module)\n\n- [Keycloak GDPR Module](#keycloak-gdpr-module)\n  - [Setup](#setup)\n  - [Deploy into a standalone keycloak server](#deploy-into-a-standalone-keycloak-server)\n  - [Development](#development)\n    - [Local Keycloak server](#local-keycloak-server)\n  - [Testing](#testing)\n    - [Performance Tests](#performance-tests)\n\n# Keycloak GDPR Module\n\nA Keycloak module to assist storing data in a GDPR compliant way, using Crypto Shredding.\nIt stores the users keys and encrypt/decrypt the data, so that cryptographic keys will never\nleave the system.\n\nThe module is currently a Proof-of-Concept and has not yet been tested in production use cases.\n\n## Setup\n\nPrerequisites:\n* JDK 11+\n* Docker\n\nBuild and start:\n```bash\n# Start keycloak and MySQL database\ndocker-compose up -d\n\n# Build the GDPR module\nmvn clean package -DskipTests\n\n# Copy the Build artifact into the Keycloak container\n.bin/update-spi.sh\n```\n\nThe Keycloak server will now be available on \u003chttp://localhost:8888\u003e. You can log into the Administration Console using “**admin**” as both username and password.\n\n\n## Deploy into a standalone keycloak server\n\nCopy the built artifact from `./deployment/target/gdpr-module-for-keycloak-${project.incremental.version}.ear` into the directory `${keycloak.home}/standalone/deployments` of a keycloak server.  \n**NOTE:** *If the server is running during deployment you need to restart it!*\n\n## Testing\n\n### Performance Tests\n\nFor performance we're using (Gatling)[https://gatling.io/docs/current/quickstart/]:\n```\n(cd spi/ \u0026\u0026 ../mvnw gatling:test)\n```\n\n### Debugging\n\nTo debug the deployed module:\n```bash\n$ docker compose up\n$ .bin/update-spi.sh\n```\nthen connect via Remote Debugging:\n```\n-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:9097\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoolisticon%2Fkeycloak-gdpr-module","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftoolisticon%2Fkeycloak-gdpr-module","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoolisticon%2Fkeycloak-gdpr-module/lists"}