Authentifizierung
IVGraph nutzt zwei Authentifizierungsmethoden: JWT-Tokens (für Nutzer der Webanwendung über Notion OAuth) und Service-Tokens (für LLM-Agenten und Automatisierung).
Notion OAuth (JWT)
IVGraph authentifiziert Nutzer über den OAuth2-Ablauf von Notion. Eine Registrierung mit Benutzername und Passwort gibt es nicht.
Ablauf
User clicks "Sign in with Notion"
|
v
GET /api/integrations/auth/notion/
| -> Redirects to Notion consent screen
v
User authorizes IVGraph in Notion
|
v
Notion redirects to /api/integrations/auth/notion/callback?code=...
| -> Backend exchanges code for Notion token
| -> Creates/updates Django user
| -> Issues JWT tokens
v
Redirect to dashboard with tokens in URL fragment
JWT-Tokens
| Token | Gültigkeitsdauer | Zweck |
|---|---|---|
| Access-Token | 4 Stunden | API-Authentifizierung |
| Refresh-Token | 7 Tage | Neues Access-Token abrufen |
Access-Token verwenden:
curl -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." \
"https://ivgraph.com/api/notion-graph/"
Abgelaufenes Token erneuern:
curl -X POST "https://ivgraph.com/api/auth/refresh/" \
-H "Content-Type: application/json" \
-d '{"refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."}'
Antwort:
{"access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."}
Abmelden (Refresh-Token sperren):
curl -X POST "https://ivgraph.com/api/auth/logout/" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{"refresh": "<refresh_token>"}'
Authentifizierungsendpunkte
| Methode | Endpunkt | Beschreibung |
|---|---|---|
| GET | /api/integrations/auth/notion/ |
Notion-OAuth-Ablauf starten |
| GET | /api/integrations/auth/notion/callback |
OAuth-Callback (intern) |
| GET | /api/integrations/auth/notion/status |
OAuth-Status prüfen |
| POST | /api/auth/refresh/ |
Access-Token erneuern |
| POST | /api/auth/logout/ |
Refresh-Token sperren |
| GET | /api/auth/validate/ |
Gültigkeit des Tokens prüfen |
| GET | /api/auth/me/ |
Informationen zum aktuellen Nutzer abrufen |
Service-Tokens (für LLM-Agenten)
Service-Tokens ermöglichen langfristigen Zugriff auf die schreibgeschützte V1-API mit festgelegten Berechtigungsbereichen. Sie sind für LLM-Agenten, Automatisierungsskripte und CI/CD-Pipelines konzipiert.
Token-Format
- Präfix:
ivg_(z. B.ivg_a1b2c3d4e5f6...) - Länge: 32 zufällige Zeichen nach dem Präfix
- Speicherung: In der Datenbank wird nur der SHA-256-Hash gespeichert – das Token im Klartext wird nur einmal beim Erstellen angezeigt
Token erstellen
Über die API (JWT-Authentifizierung erforderlich):
curl -X POST "https://ivgraph.com/api/tokens/" \
-H "Authorization: Bearer <jwt_access_token>" \
-H "Content-Type: application/json" \
-d '{
"name": "My LLM Agent",
"scopes": ["graph:search", "graph:read", "graph:neighbors"],
"workspace_ids": ["your-workspace-uuid"],
"expires_in_days": 90
}'
Antwort (das Token wird nur einmal angezeigt!):
{
"id": 1,
"name": "My LLM Agent",
"token": "ivg_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
"prefix": "ivg_a1b2c3",
"scopes": ["graph:search", "graph:read", "graph:neighbors"],
"workspace_ids": ["your-workspace-uuid"],
"is_active": true,
"created_at": "2026-04-10T12:00:00Z",
"expires_at": "2026-07-09T12:00:00Z"
}
Berechtigungsbereiche
| Berechtigungsbereich | Erlaubt |
|---|---|
graph:search |
Knoten nach Titel suchen |
graph:read |
Knotendetails und Seiteninhalte lesen |
graph:neighbors |
Benachbarte Knoten abrufen und Pfade durchlaufen |
Limits
- Maximal 10 Tokens pro Nutzer
- Jedes Token muss mindestens einen Berechtigungsbereich haben
- Jedes Token muss mindestens eine workspace_id haben (Zugriff standardmäßig verweigert)
- Optionales Ablaufdatum (
expires_in_days) – für unbegrenzte Gültigkeit weglassen
Tokens verwalten
| Methode | Endpunkt | Beschreibung |
|---|---|---|
| GET | /api/tokens/ |
Deine Tokens auflisten (ohne Klartextwerte) |
| POST | /api/tokens/ |
Neues Token erstellen |
| DELETE | /api/tokens/<id>/ |
Token widerrufen (dauerhaft) |