Subject-Konflikte einer Verbindung auflisten
GET /v1/connections/{connection_id}/subject-conflicts · Berechtigung users:read
Listet die SSO-Subject-Konflikte einer Enterprise-Verbindung (SAML oder OIDC) auf, neueste zuerst.
Ein Subject-Konflikt wird erfasst, wenn der Identitätsanbieter ein neues Subject mit der verifizierten E-Mail-Adresse eines Benutzers sendet, der bereits unter einem anderen Subject mit derselben Verbindung verknüpft ist. Das geschieht zum Beispiel, wenn das Postfach einer ehemaligen Mitarbeiterin einem neuen Mitarbeiter zugewiesen wird. KeenAuth verknüpft das neue Subject nicht automatisch: Die Anmeldung wird mit sso_subject_conflict abgelehnt, und für einen Administrator wird ein Datensatz angelegt, der aufgelöst werden kann.
- Solange ein Datensatz offen ist, aktualisieren weitere Anmeldungen mit demselben Subject diesen Datensatz, statt einen neuen anzulegen.
- Ein offener Datensatz läuft 30 Tage nach seiner Erstellung ab.
- Datensätze enthalten nie das externe Subject oder die E-Mail-Adresse.
Die Berechtigung ist users:read, weil ein Datensatz ein Benutzerkonto betrifft; zum Auflösen wird users:write benötigt.
Anfrage
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
connection_id |
path | ja | Verbindungs-ID (conn_…). |
limit |
query | nein | Seitengröße, 1–100 (Standard 20). |
after / before |
query | nein | Cursor aus list_metadata. Ein Cursor funktioniert nur für die Verbindung, die ihn erzeugt hat. |
order |
query | nein | desc (Standard) oder asc, nach Erstellungszeitpunkt. |
Antwort
200 OK:
{
"data": [
{
"id": "sscf_01j9xr4a6b8c0d2e4f6g8h0j2k",
"connection_id": "conn_01j9xp6q0r1s5t7v9w1x3y5z7b",
"user_id": "usr_01j9xm2n4p6q8r0s2t4v6w8x0y",
"status": "open",
"resolution": null,
"created_at": "2026-10-28T10:00:00Z",
"last_seen_at": "2026-10-28T10:05:00Z",
"expires_at": "2026-11-27T10:00:00Z",
"closed_at": null
}
],
"list_metadata": { "before": null, "after": null }
}
| Feld | Beschreibung |
|---|---|
user_id |
Der Benutzer, dem die verifizierte E-Mail-Adresse gehört und der bereits unter einem anderen Subject mit dieser Verbindung verknüpft ist. |
status |
open (wartet auf eine Entscheidung), resolved oder expired (30 Tage nach seiner Erstellung ohne Entscheidung geschlossen). |
resolution |
same_person oder different_person; wird nur gesetzt, wenn status resolved ist. |
last_seen_at |
Der letzte Anmeldeversuch mit dem neuen Subject. |
closed_at |
Zeitpunkt, zu dem der Datensatz aufgelöst oder abgelaufen ist; null, solange er offen ist. Ein abgelaufener Datensatz kann ebenfalls null anzeigen. |
Fehler
| HTTP | Code | Wann |
|---|---|---|
| 400 | invalid_cursor |
Der Cursor ist fehlerhaft oder gehört zu einer anderen Verbindung oder Abfrage. |
| 401 | unauthenticated |
Die Anmeldedaten fehlen, sind ungültig oder widerrufen. |
| 403 | insufficient_permissions |
Die Anmeldedaten haben nicht users:read. |
| 404 | not_found |
Die Verbindung existiert in dieser Umgebung nicht. |
| 422 | validation_failed |
Ein Abfrageparameter ist ungültig (zum Beispiel limit über 100). |
| 429 | rate_limited |
Das Ratenlimit wurde überschritten; wiederholen Sie die Anfrage nach der Zeit aus Retry-After. |
| 503 | service_unavailable |
Eine Abhängigkeit ist vorübergehend nicht verfügbar; wiederholen Sie die Anfrage nach der Zeit aus Retry-After. |
Beispiel
curl "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/subject-conflicts?limit=20" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
keenauth connections subject-conflicts list conn_01j9xp6q0r1s5t7v9w1x3y5z7b --limit 20