Integration
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
| App | Erlaubte Gruppen |
|---|---|
| Kuglers OS | admin, os-admin |
| Kuglers Docs | admin, docs-admin |
| Kuglers Status | admin, 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:
| Feld | Beispiel |
|---|---|
| Name | Kuglers OS |
| Redirect URI | https://os.kuglers.at/auth/callback |
| Erlaubte Gruppen | admin, 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:
localStoragefür Tokens- nicht registrierte Redirect URIs
- hardcodierte Client Secrets
- geteilte Adminpasswörter
Zuletzt aktualisiert: 2. Juni 2026