Skip to content

Keycloak plugins for MFA (enforce MFA, SMS authentication step, native app integration)

License

Notifications You must be signed in to change notification settings

netzbegruenung/keycloak-mfa-plugins

Repository files navigation

Keycloak MFA Plugin collection

This repository contains the source code for a collection of Keycloak MFA plugins. The plugins are:

  • SMS authenticator: Provides SMS as authentication step. SMS are sent via HTTP API, which can be configured. (production ready)
  • Enforce MFA: Force users to configure a second factor after logging in. (beta)
  • Native App MFA integration: connect a mobile app to Keycloak which receives a notification about a pending login process and allows the user to allow/block the login request. (work in progress)

The different plugins are documented in the submodules README. If you need support for deployment or adjustments, please contact support@verdigado.com.

License

The code of this project is Apache 2.0 licensed. Parts of the original code are MIT licensed.

Development

Run the Quarkus distribution in development mode for live reloading and debugging similar to: https://github.com/keycloak/keycloak/tree/main/quarkus#contributing

mvn -f some_module/pom.xml compile quarkus:dev

Works great:) keycloak/keycloak#11841

Building

  1. Clone this repository
  2. Install Apache Maven
  3. Change into the cloned directory and run
    mvn clean install
    A file target/netzbegruenung.keycloak-2fa-sms-authenticator.jar should be created.

If building fails and the problem is caused or related to the dev module or tests, try to run mvn clean install -DskipTests.

Releases

Deployment is done by github actions: .github/workflows/release.yml To trigger the release workflow be sure to have proper access rights and follow the steps below. https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-tag-protection-rules#about-tag-protection-rules

  1. Update project and submodules version mvn versions:set -DnewVersion=1.2.3; mvn versions:commit
  2. Commit your changes
  3. Add tag to your commit git tag -a v1.2.3 -m "Bump version 1.2.3"
  4. Trigger the release by git push --tags

After building completes the new release is available on github containing the jar files for each module.