├── .github └── FUNDING.yml ├── .gitignore ├── Dockerfile ├── LICENSE ├── README.md ├── docker-compose.yml ├── images ├── kc-admin-events.png ├── keycloak-openfga-event-listener.png ├── listener.png ├── openfga-authz-model.png ├── solution-architecture.png └── zanzibar.png ├── keycloak-openfga-authorization-model.json ├── openfga-authorization-model.json ├── pom.xml └── src └── main ├── java └── io │ └── embesozzi │ └── keycloak │ ├── OpenFgaEventListenerProvider.java │ ├── OpenFgaEventListenerProviderFactory.java │ ├── event │ └── EventParser.java │ ├── model │ ├── AuthorizationModel.java │ ├── ObjectRelation.java │ ├── OpenFgaTupleEvent.java │ ├── OpenFgaTupleEventSerializer.java │ ├── TypeDefinition.java │ └── ZanzibarTupleEvent.java │ └── service │ ├── KafkaServiceHandler.java │ ├── ServiceHandler.java │ └── ServiceHandlerFactory.java └── resources └── META-INF └── services └── org.keycloak.events.EventListenerProviderFactory /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | custom: https://www.paypal.me/embesozzi -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /.settings/ 3 | .idea/ 4 | .classpath 5 | .project 6 | .DS_Store 7 | 8 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/Dockerfile -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/README.md -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/docker-compose.yml -------------------------------------------------------------------------------- /images/kc-admin-events.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/images/kc-admin-events.png -------------------------------------------------------------------------------- /images/keycloak-openfga-event-listener.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/images/keycloak-openfga-event-listener.png -------------------------------------------------------------------------------- /images/listener.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/images/listener.png -------------------------------------------------------------------------------- /images/openfga-authz-model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/images/openfga-authz-model.png -------------------------------------------------------------------------------- /images/solution-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/images/solution-architecture.png -------------------------------------------------------------------------------- /images/zanzibar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/images/zanzibar.png -------------------------------------------------------------------------------- /keycloak-openfga-authorization-model.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/keycloak-openfga-authorization-model.json -------------------------------------------------------------------------------- /openfga-authorization-model.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/openfga-authorization-model.json -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/pom.xml -------------------------------------------------------------------------------- /src/main/java/io/embesozzi/keycloak/OpenFgaEventListenerProvider.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/src/main/java/io/embesozzi/keycloak/OpenFgaEventListenerProvider.java -------------------------------------------------------------------------------- /src/main/java/io/embesozzi/keycloak/OpenFgaEventListenerProviderFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/src/main/java/io/embesozzi/keycloak/OpenFgaEventListenerProviderFactory.java -------------------------------------------------------------------------------- /src/main/java/io/embesozzi/keycloak/event/EventParser.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/src/main/java/io/embesozzi/keycloak/event/EventParser.java -------------------------------------------------------------------------------- /src/main/java/io/embesozzi/keycloak/model/AuthorizationModel.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/src/main/java/io/embesozzi/keycloak/model/AuthorizationModel.java -------------------------------------------------------------------------------- /src/main/java/io/embesozzi/keycloak/model/ObjectRelation.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/src/main/java/io/embesozzi/keycloak/model/ObjectRelation.java -------------------------------------------------------------------------------- /src/main/java/io/embesozzi/keycloak/model/OpenFgaTupleEvent.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/src/main/java/io/embesozzi/keycloak/model/OpenFgaTupleEvent.java -------------------------------------------------------------------------------- /src/main/java/io/embesozzi/keycloak/model/OpenFgaTupleEventSerializer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/src/main/java/io/embesozzi/keycloak/model/OpenFgaTupleEventSerializer.java -------------------------------------------------------------------------------- /src/main/java/io/embesozzi/keycloak/model/TypeDefinition.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/src/main/java/io/embesozzi/keycloak/model/TypeDefinition.java -------------------------------------------------------------------------------- /src/main/java/io/embesozzi/keycloak/model/ZanzibarTupleEvent.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/src/main/java/io/embesozzi/keycloak/model/ZanzibarTupleEvent.java -------------------------------------------------------------------------------- /src/main/java/io/embesozzi/keycloak/service/KafkaServiceHandler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/src/main/java/io/embesozzi/keycloak/service/KafkaServiceHandler.java -------------------------------------------------------------------------------- /src/main/java/io/embesozzi/keycloak/service/ServiceHandler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/src/main/java/io/embesozzi/keycloak/service/ServiceHandler.java -------------------------------------------------------------------------------- /src/main/java/io/embesozzi/keycloak/service/ServiceHandlerFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/embesozzi/keycloak-openfga-event-kafka/HEAD/src/main/java/io/embesozzi/keycloak/service/ServiceHandlerFactory.java -------------------------------------------------------------------------------- /src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory: -------------------------------------------------------------------------------- 1 | io.embesozzi.keycloak.OpenFgaEventListenerProviderFactory --------------------------------------------------------------------------------