Skip to content

juliuskrah/keycloak-cdc

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Architecture

Quickly for the impatient

Clone this repository and navigate into the project directory and run the following commands:

> docker-compose -f docker-compose.nobuild.yml up -d

You will need docker, docker-compose and git to run this example.

Setting up Debezium

Make a JSON POST request (I am using cURL in this example - Use any REST client of choice) using the payload indicated below:

> curl -s \
     -X "POST" "http://localhost:8083/connectors/" \
     -H "Content-Type: application/json" \
     -d '{
  "name": "keycloak-connector",
  "config": {
    "connector.class": "io.debezium.connector.postgresql.PostgresConnector",
    "database.hostname": "postgres",
    "database.port": "5432",
    "slot.name": "keycloak_debezium",
    "plugin.name": "pgoutput",
    "database.user": "postgres",
    "database.password": "postgrespwd",
    "database.dbname": "sample",
    "database.server.name": "keycloak",
    "schema.whitelist": "sample",
    "table.whitelist": "sample.user_role_mapping,sample.user_group_membership,sample.keycloak_role,sample.user_entity"
  }
}'

Navigate to the URL and switch to the sample realm to start hacking;

Use the credentials below to log in:

Username: test
Password: test

Introduction

Preview

This repository contains a sample project on how to stream in real-time, users created in Keycloak to your application.

Prerequisite

To be able to run this application, you need the following to be setup:

  • Postgres
  • Zookeeper
  • Kafka
  • Kafka Connect
  • Keycloak
  • Java
  • Gradle

You don't have to set these up if you're using docker. I have provided a compose file to ease this.

Develop

For developers that want to contribute, you need Java setup. Clone this repository and navigate to the app-service directory. From there, run the following command:

> ./gradlew run

View real-time changes with:

> curl http://127.0.0.1:8082/api/users/stream