Kuglers Auth

Integration

Anbindung von Kuglers OS, Kuglers Docs, Kuglers Status und späteren Apps.

Integration

Kuglers Auth bereitet einen einfachen OIDC-ähnlichen Authorization-Code-Flow vor. Bestehende Projekte werden nicht automatisch verändert. Jede App wird später einzeln angebunden.

Zielbild

AppErlaubte Gruppen
Kuglers OSadmin, os-admin
Kuglers Docsadmin, docs-admin
Kuglers Statusadmin, status-admin

Öffentliche Bereiche der Apps bleiben öffentlich. Nur Adminbereiche werden geschützt.

Client registrieren

Im Adminpanel wird pro App ein Client angelegt.

Beispiel für Kuglers OS:

FeldBeispiel
NameKuglers OS
Redirect URIhttps://os.kuglers.at/auth/callback
Erlaubte Gruppenadmin, os-admin

Die Redirect URI muss exakt mit dem späteren Callback der App übereinstimmen.

Login starten

Eine App leitet nicht eingeloggte Admins zu Kuglers Auth:

https://auth.kuglers.at/authorize?client_id=<client_id>&redirect_uri=<redirect_uri>&state=<state>

Kuglers Auth prüft:

  • Client existiert
  • Client ist aktiv
  • Redirect URI ist exakt registriert
  • User ist eingeloggt
  • User hat eine erlaubte Gruppe

Wenn der User nicht eingeloggt ist, wird er zu /login weitergeleitet.

Code austauschen

Nach erfolgreichem Login leitet Kuglers Auth zurück:

https://app.example.at/auth/callback?code=<code>&state=<state>

Die App tauscht den Code aus:

POST /api/token
Content-Type: application/x-www-form-urlencoded

code=<code>
client_id=<client_id>
client_secret=<client_secret>
redirect_uri=<redirect_uri>

Antwort:

{
  "user": {
    "id": "user-id",
    "email": "[email protected]",
    "name": "Manuel Kugler",
    "groups": ["admin"]
  },
  "token_type": "Bearer",
  "access_token": "..."
}

Das access_token ist optional und nur vorhanden, wenn JWT-Schlüssel konfiguriert sind.

Userinfo

Apps können Userdaten über /api/userinfo beziehen, wenn eine gültige Session oder ein gültiges Bearer Token vorhanden ist.

GET /api/userinfo
Authorization: Bearer <access_token>

Antwort:

{
  "id": "user-id",
  "email": "[email protected]",
  "name": "Manuel Kugler",
  "groups": ["admin", "os-admin"]
}

App-Session

Angebundene Apps sollten nach erfolgreichem Callback eine eigene App-Session erstellen. Die App-Session sollte ebenfalls per HttpOnly-Cookie geführt werden.

Nicht verwenden:

  • localStorage für Tokens
  • nicht registrierte Redirect URIs
  • hardcodierte Client Secrets
  • geteilte Adminpasswörter

Zuletzt aktualisiert: 2. Juni 2026