61
Readme.md
61
Readme.md
@@ -20,15 +20,44 @@ 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.
|
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!
|
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](https://datei.wiki/definition/die-grundlagen-des-feature-creep/)
|
||||||
|
* kein NodeJS – und damit keine Dependency-Hölle
|
||||||
|
* Platformunabhängig dank Java
|
||||||
|
* erweiterbar
|
||||||
|
* verschlüsselte Datenbank
|
||||||
|
|
||||||
## bauen
|
## bauen
|
||||||
|
|
||||||
Dies ist ein Gradle-Project. Um es zu compilieren brauchen Sie ein aktuelles Java-Development-Kit.
|
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.
|
Das Projekt kann durch Aufruf von `./gradlew build` in einem Terminal innerhalb des Wurzelverzeichnisses gebaut werden.
|
||||||
|
|
||||||
## Datenbank-Unterstützung
|
## 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.
|
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]
|
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.
|
||||||
|
|
||||||
|
|
||||||
</td><td>
|
</td><td>
|
||||||
|
|
||||||
This aims to be a [specification] compliant OpenID connect provider with minimal footprint.
|
This aims to be a [specification] compliant OpenID connect provider with minimal footprint.
|
||||||
@@ -43,19 +72,47 @@ 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.
|
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!
|
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
|
## build
|
||||||
|
|
||||||
This is a gradle project. To compile it, you should have a recent version of a Java Development Kit installed.
|
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.
|
Build the roject by launching `./gradlew build` in a terminal while being in the root folder of the project.
|
||||||
|
|
||||||
## database support
|
## 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.
|
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]
|
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!
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
[Keycloak]: https://www.keycloak.org/
|
||||||
[specification]: https://openid.net/specs/openid-connect-core-1_0.html
|
[specification]: https://openid.net/specs/openid-connect-core-1_0.html
|
||||||
[sqlite]: ../sqlite
|
[sqlite]: ../sqlite
|
||||||
Reference in New Issue
Block a user