Skip to content
This repository was archived by the owner on Apr 4, 2022. It is now read-only.

A simple keycloak adapter for Matrix Synapse allowing to login into Matrix using Keycloak as an identity provider.

License

Notifications You must be signed in to change notification settings

hoohoot/synapse-keycloak-adapter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e647272 · Sep 7, 2018
Sep 3, 2018
Sep 7, 2018
Sep 3, 2018
Sep 3, 2018
Sep 7, 2018
Sep 3, 2018
Sep 2, 2018
Sep 7, 2018
Sep 6, 2018
Sep 6, 2018
Sep 7, 2018

Repository files navigation

quality-gate code-smells bugs

pipeline status

Synapse Keycloak Adapter

A simple keycloak adapter for Matrix Synapse allowing to login into Matrix using Keycloak as an identity provider.

Disclaimer

WORK IN PROGRESS : THIS IS STILL NOT COMPLETELY FUNCTIONAL

We cannot guaranty this is 100% secure, we are still learning and doing this for fun. Enjoy!

Prerequisites

To use this adapter you need to have a running Keycloak Instance.

Go to the Official Keycloak Documentation to learn how to do that.

The easiest way to set up a Keycloak Instance is to use Docker Compose (More info here).

Getting started

Adapter only

If you only need the adapter you can run only this part :

With docker :

Run the following command after having replaced the environment variables with your own values :

docker run -e \

hoohoot/synapse-keycloak-adaper

With docker compose :

  1. Edit docker-compose-adapter-only.yml and edit the variables following your needs

  2. Start the adapter : docker-compose -f docker-compose-adapter-only.yml up -d

Complete setup

TODO

Configuration

Variable Status Description
SYNAPSE_HOST mandatory hostname of your Synapse instance (eg. matrix.example.org)
KEYCLOAK_CLIENT_ID mandatory The client ID of the client you've configured in Keycloak
KEYCLOAK_CLIENT_SECRET mandatory The client secret of the client you've configured in Keycloak
KEYCLOAK_SEARCH_USER mandatory The username of the keycloak user dedicated to searching user.
KEYCLOAK_SEARCH_PASSWORD mandatory The password of the keycloak user dedicated to searching users.
REALM optional (default value : master) The name of your Keycloak Realm
SSL_ACTIVE optional (default value: true) Activate or not HTTPS for requests
SERVER_PORT optional (default value: 8080) The port the VertX server will listen on
USER_AGENT optional (default value: synapse-adapter) The user agent used for requests

Configuration

Variable Status Description
SYNAPSE_HOST mandatory hostname of your Synapse instance (eg. matrix.example.org)
KEYCLOAK_CLIENT_ID mandatory The client ID of the client you've configured in Keycloak
KEYCLOAK_CLIENT_SECRET mandatory The client secret of the client you've configured in Keycloak
KEYCLOAK_SEARCH_USER mandatory The username of the keycloak user dedicated to searching user.
KEYCLOAK_SEARCH_PASSWORD mandatory The password of the keycloak user dedicated to searching users.
REALM optional (default value : master) The name of your Keycloak Realm
SSL_ACTIVE optional (default value: true) Activate or not HTTPS for requests
SERVER_PORT optional (default value: 8080) The port the VertX server will listen on
USER_AGENT optional (default value: synapse-adapter) The user agent used for requests

Upgrade

In order to upgrade to the last version, just run the next two commands :

docker-compose pull
docker-compose up -d

Development

  1. Set the following environment variables
SYNAPSE_HOST=matrix.example.org
KEYCLOAK_HOST=keycloak.example.org
KEYCLOAK_CLIENT_BASIC=${base64(client-id:client-secret)}
REALM=my-keycloak-realm;
KEYCLOAK_SEARCH_USERNAME=admin;
KEYCLOAK_SEARCH_PASSWORD=password
  1. Package the application:
mvn clean install
  1. Run the fat jar :
java -jar target/keycloak-synapse-adapter-${version}-SNAPSHOT-fat.jar -conf src/conf/config.json

Ressources

We use the following projects :