API-Referenz
Die Auris-API ist eine REST-API, die programmatischen Zugriff auf alle IAM-Funktionen bietet: Authentifizierung, Benutzerverwaltung, Rollen, Berechtigungen, Organisationen, feingranulare Autorisierung und mehr. Alle API-Antworten verwenden JSON.
Basis-URL
https://ihre-auris-domain.de/apiErsetze ihre-auris-domain.de durch die Domain, auf der deine Auris-Instanz bereitgestellt wird. Wenn du den Auris-Cloud-Dienst verwendest, ist deine Domain die in der Konsole unter Einstellungen → Benutzerdefinierte Domains angezeigte.
Authentifizierung
Bearer-Token
Die meisten Endpunkte erfordern ein gültiges Zugriffs-Token im Authorization-Header:
Authorization: Bearer <zugriffs_token>Zugriffs-Token sind kurzlebige JWTs (Standard 15 Minuten), die über die Authentifizierungsendpunkte erhalten werden. Sie werden mit RS256 (oder HS256 je nach Konfiguration) signiert und können lokal mit dem JWKS-Endpunkt verifiziert werden.
Zugriffsstufe nach Endpunkttyp
| Endpunkttyp | Authentifizierung erforderlich | Hinweise |
|---|---|---|
| Öffentliche Auth-Endpunkte | Nein | /api/auth/login, /api/auth/signup, /api/auth/magic-link, /api/oauth/authorize |
| Authentifizierter Benutzer | Ja | Standard-Benutzer-Zugriffs-Token |
| Admin-Endpunkte | Ja | Token muss die erforderliche Berechtigung tragen (z. B. manage:users) |
| M2M-Endpunkte | Ja | client_credentials-Token mit konfigurierten Scopes |
Admin- und Verwaltungsendpunkte prüfen Berechtigungen mit dem x-tenant-Header in Kombination mit dem Bearer-Token. Die Rollen des Tokens werden aufgelöst und gegen die erforderliche Berechtigung verifiziert, bevor die Anforderung verarbeitet wird.
Tenant-Header
Auris ist eine Multi-Tenant-Plattform. Anforderungen an Admin-Endpunkte müssen den Tenant-Bezeichner enthalten:
x-tenant: <tenant-id>Die Tenant-ID ist der in deiner Auris-Bereitstellung konfigurierte Realm-Name. Für die Standardinstallation ist es default. Für benutzerdefinierte Tenant-Setups ist es der in der Konsole unter Einstellungen → Allgemein angezeigte Realm-Name.
Wenn der Header bei Endpunkten, die ihn erfordern, weggelassen wird, gibt die API 400 Bad Request mit Code MISSING_TENANT zurück.
Anforderungsformat
Verwende Content-Type: application/json für alle POST-, PUT- und PATCH-Anforderungen mit einem Anforderungs-Body:
Content-Type: application/jsonBeispielanforderung:
curl -X POST https://ihre-auris-domain.de/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]", "password": "geheim"}'Für Datei-Uploads (Benutzerimport) verwende multipart/form-data.
Antwortformat
Alle API-Antworten folgen einem konsistenten Umschlagsformat.
Erfolgsantwort
{
"ok": true,
"data": { }
}Das data-Feld enthält das Ergebnis. Seine Form variiert je nach Endpunkt und ist für jeden Endpunkt individuell dokumentiert.
Fehlerantwort
{
"ok": false,
"error": {
"code": "FEHLERCODE",
"message": "Für Menschen lesbare Beschreibung des Problems."
}
}HTTP-Statuscodes
| Code | Bedeutung |
|---|---|
200 OK | Anforderung erfolgreich |
201 Created | Ressource erfolgreich erstellt |
400 Bad Request | Ungültiger Anforderungs-Body oder Parameter |
401 Unauthorized | Fehlendes oder ungültiges Zugriffs-Token |
403 Forbidden | Token ist gültig, aber fehlt die erforderliche Berechtigung |
404 Not Found | Ressource existiert nicht |
409 Conflict | Ressource existiert bereits (z. B. doppelte E-Mail) |
429 Too Many Requests | Rate-Limit überschritten |
500 Internal Server Error | Serverseitiger Fehler |
Häufige Fehlercodes
| Code | Beschreibung |
|---|---|
INVALID_CREDENTIALS | E-Mail/Passwort-Kombination ist falsch |
ACCOUNT_LOCKED | Konto ist aufgrund zu vieler fehlgeschlagener Versuche gesperrt |
TOKEN_EXPIRED | Zugriffs-Token ist abgelaufen |
TOKEN_INVALID | Zugriffs-Token ist fehlerhaft oder Signatur ist ungültig |
PERMISSION_DENIED | Benutzer fehlt die erforderliche Berechtigung |
NOT_FOUND | Angeforderte Ressource existiert nicht |
VALIDATION_ERROR | Anforderungs-Body hat Schemavalidierung nicht bestanden |
RATE_LIMITED | Zu viele Anforderungen in einem kurzen Zeitfenster |
MISSING_TENANT | Erforderlicher x-tenant-Header fehlt |
TENANT_NOT_FOUND | Angegebener Tenant existiert nicht |
Paginierung
Listen-Endpunkte geben paginierte Ergebnisse mit cursorbasierter Seitennummerierung zurück.
Antwortform
{
"ok": true,
"data": {
"data": [],
"pagination": {
"page": 1,
"limit": 20,
"total": 143,
"totalPages": 8
}
}
}Abfrageparameter
| Parameter | Typ | Standard | Max | Beschreibung |
|---|---|---|---|---|
page | integer | 1 | — | Seitennummer (1-basiert) |
limit | integer | 20 | 100 | Elemente pro Seite |
Beispiel:
GET /api/users?page=2&limit=50Rate Limiting
Jede Antwort enthält Rate-Limiting-Header:
| Header | Beschreibung |
|---|---|
X-RateLimit-Limit | Maximal erlaubte Anforderungen im aktuellen Fenster |
X-RateLimit-Remaining | Verbleibende Anforderungen im aktuellen Fenster |
X-RateLimit-Reset | Unix-Zeitstempel, wann das Fenster zurückgesetzt wird |
Wenn ein Rate-Limit überschritten wird, gibt die API 429 Too Many Requests mit einem Retry-After-Header zurück, der angibt, wie viele Sekunden gewartet werden soll.
Rate-Limit-Stufen
| Stufe | Endpunkte | Limit |
|---|---|---|
| Auth | Anmeldung, Registrierung, Passwort vergessen | Streng (verhindert Brute-Force) |
| Sensitiv | 2FA, Passwortänderung, Magic Link | Moderat |
| API | Alle Admin-/Verwaltungsendpunkte | Standard |
| Öffentlich | OIDC-Discovery, JWKS | Entspannt |
Auth- und sensitive Endpunkte haben zusätzlich zu den IP-basierten Limits zusätzliche Pro-Konto-Rate-Limits. Wiederholte Fehlversuche bei der Anmeldung lösen eine progressive Sperrung aus.
CORS
Cross-Origin Resource Sharing (CORS) wird für alle API-Endpunkte durchgesetzt. Erlaubte Origins müssen in den Anwendungseinstellungen in der Auris-Konsole unter Anwendungen → [App] → Erlaubte Origins registriert werden.
Preflight-OPTIONS-Anforderungen werden automatisch behandelt. Anmeldedaten (Cookies) sind erlaubt, wenn die Anforderungsorigin registriert ist.
Eine Origin registrieren:
- Gehe zu Konsole → Anwendungen
- Wähle deine Anwendung aus
- Füge die Origin zu Erlaubte Origins hinzu (z. B.
https://app.ihredomain.de)
OIDC-Discovery
Auris stellt ein Standard-OpenID-Connect-Discovery-Dokument bereit:
GET /.well-known/openid-configurationDies gibt ein JSON-Dokument zurück, das alle Endpunkt-URLs, unterstützte Grant-Typen, Scopes, Signaturalgorithmen und andere Metadaten enthält. Standard-OIDC-Bibliotheken verwenden dies zur automatischen Konfiguration.
Beispiel-Antwortfelder:
{
"issuer": "https://ihre-auris-domain.de",
"authorization_endpoint": "https://ihre-auris-domain.de/api/oauth/authorize",
"token_endpoint": "https://ihre-auris-domain.de/api/auth/token",
"userinfo_endpoint": "https://ihre-auris-domain.de/api/auth/validate",
"jwks_uri": "https://ihre-auris-domain.de/.well-known/jwks.json",
"response_types_supported": ["code"],
"grant_types_supported": ["authorization_code", "client_credentials", "urn:ietf:params:oauth:grant-type:device_code", "urn:ietf:params:oauth:grant-type:token-exchange"],
"subject_types_supported": ["public"],
"id_token_signing_alg_values_supported": ["RS256", "HS256"],
"scopes_supported": ["openid", "profile", "email"]
}JWKS
Öffentliche Signaturschlüssel zur JWT-Verifizierung sind verfügbar unter:
GET /.well-known/jwks.jsonAntwort:
{
"keys": [
{
"kty": "RSA",
"use": "sig",
"kid": "key-id-1",
"alg": "RS256",
"n": "...",
"e": "AQAB"
}
]
}Schlüssel werden von Clients bis zu 1 Stunde gecacht (Cache-Control: public, max-age=3600). Key-Rotation fügt dem Set einen neuen Schlüssel hinzu; alte Schlüssel bleiben vorhanden, bis ihre ausgestellten Token ablaufen.
Das Auris JS SDK (@auris/js) enthält einen integrierten JWKS-basierten JWT-Verifizierer, der Signaturschlüssel automatisch abruft und zwischenspeichert. Siehe die SDK-Dokumentation für die Verwendung.
SDK-Clients
Anstatt die API direkt aufzurufen, erwäge die Verwendung eines Auris-SDK, das Token-Management, PKCE, Aktualisierung und Fehlerbehandlung automatisch übernimmt:
| SDK | Paket | Sprache |
|---|---|---|
| JavaScript | @auris/js | Browser + Node.js |
| React | @auris/react | React 18+ |
| Next.js | @auris/nextjs | Next.js 13+ App Router |
| PHP | auris/sdk | PHP 7.4+ |
| WordPress | auris-sso | WordPress-Plugin |
Siehe die SDK-Dokumentation für Installations- und Verwendungsanleitungen.