You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Stephan Richter 9f3500dd8f update readme 3 weeks ago
config adapted code to changes of underlying libraries 2 months ago
de.srsoftware.oidc.api replaced Content by Payload due to upstream library changes 2 months ago
de.srsoftware.oidc.app fixed jar task 1 month ago
de.srsoftware.oidc.backend replaced Content by Payload due to upstream library changes 2 months ago
de.srsoftware.oidc.datastore.encrypted replaced Content by Payload due to upstream library changes 2 months ago
de.srsoftware.oidc.datastore.file replaced Content by Payload due to upstream library changes 2 months ago
de.srsoftware.oidc.web minor gui improvement 1 month ago
gradle/wrapper added gradle wrapper 9 months ago
.gitignore initial commit 9 months ago
Dockerfile fixed Dockerfile: build system changed from groovy to kotlin 1 month ago
Readme.md update readme 3 weeks ago
build.gradle.kts moved various modules and classes to tools realm, replaced gradle buildscripts by gradle kotlin buildscripts 2 months ago
gradlew added gradle wrapper 9 months ago
gradlew.bat added gradle wrapper 9 months ago
settings.gradle.kts moved various modules and classes to tools realm, replaced gradle buildscripts by gradle kotlin buildscripts 2 months ago

Readme.md

LightOIDC

Deutsch English

LightOIDC ist ein Spezifikations-treuer OpenID-Connect-Provider mit minimalem Fußabdruck.
Dieses Ziel wird durch Minimierung der externen Abhängigkeiten auf ein absolutes Minimum erreicht. Im Moment baut das Projekt nur auf die folgenden Laufzeit-Bibliotheken auf:

Im Moment haben diese Bibliotheken keine weiteren (transitiven) Anhängigkeiten, so dass das Projekt nicht durch eine Kaskade von Libraries aufgeblasen wird.
Das Ermöglicht es, dass die compilierte JAR-Datei weniger als 1,5 MB groß ist!

Motivation

Natürlich gibt es freie Implementierungen des OIDC-Protokolls. Der Platzhirsch auf dem Open-Source-Markt dürfte wohl Keycloak sein. Allerdings ist Keykloak alles andere als einfach zu konfigurieren und dürfte wohl für viele Nutzer deutlich mehr Features als Ballast mitbringen, als eigentlich benötigt werden.

Deshalb war das Ziel hier:

  • kein Feature-Creep
  • kein NodeJS – und damit keine Dependency-Hölle
  • Platformunabhängig dank Java
  • erweiterbar
  • verschlüsselte Datenbank

bauen

Dies ist ein Gradle-Project. Um es zu compilieren brauchen Sie ein aktuelles Java-Development-Kit.
Das Projekt kann durch Aufruf von ./gradlew build in einem Terminal innerhalb des Wurzelverzeichnisses gebaut werden.

Backends

Im Main-Branch ist kein Datenbank-Backend enthalten. Alle Einstellungen werden in einer JSON-Datei gespeichert, wobei eine Verschlüsselung einfach konfiguriert werden kann. Dieses Setup sollte für kleine und mittlere Instanzen reichen.

Datenbank-Unterstützung

Um das Projekt klein zu halten ist im main-Branch kein Datenbank-Support eingebaut. Es gibt aber einen separaten Branch, der die Benutzung von SQLite-Datenbanken untersützt: sqlite

Die Anbindung an andere Datenbanksysteme ist möglich, im Moment aber noch nicht implementiert.

andere Backends

Aufgrund der Architektur des OIDC-Providers sollte es jederzeit möglich sein weitere Backends, wie z.B. LDAP anzubinden. Dies ist aber im Moment noch nicht implementiert – und wird wohl erst auf Nachfrage implementiert werden.

This aims to be a specification compliant OpenID connect provider with minimal footprint.
This goal is achieved by reducing external library dependiencies to an absolute minimum.
Currently, this project only depends on the following runtime libraries:

At the time of writing, these libraries have no further transitive dependencies, thus mitigating any bloat from the project.
As a result, the compiled jar has a size of less than 1.5 MB!

Motivation

Of course, there are plenty other implementations of the OIDC protocol. The most well-known open source OIDC provider might be Keycloak. However, that piece of software called Keycloak is really heavy duty, hard to configure and bloated with features the most users won`t need.

Thus, the goal for LightOIDC was:

  • don`t be a feature creep
  • don`t use NodeJS – avoid the dependency hell
  • be platform neutral by using Java
  • be extensible
  • allow data to be encrypted

build

This is a gradle project. To compile it, you should have a recent version of a Java Development Kit installed.
Build the roject by launching ./gradlew build in a terminal while being in the root folder of the project.

backends

In the main branch, there ist no database backend. Alle preferences and data are stored in a JSON file, allowing for easy encryption of data. This setup should be fine for small and medium instances.

database support

In order to achieve a minimal footprint, no database support is incorporated in the main branch. However, there is SQLite support in a separate branch: sqlite

Utilizing other databases should be possible, but has not been implemented, yet.

other backends

LightOIDCs architecture shout allow integration other backends, like LDAP, without a hazzle. However, this is not implemented yet – work will have to be done on demand!