Zum Inhalt springen

SCIM-2.0-Referenz

Technische Referenz für Identity-Management-Teams, die einen IdP (Microsoft Entra ID, SailPoint IdentityIQ, …) mit mTime verbinden: welche SCIM-2.0-Attribute und -Operationen mTime unterstützt und was jede davon bewirkt.

Überblick

Basis-URLhttps://<Ihr mTime-Host>/api/scim/v2
StandardsRFC 7643 (Schema), RFC 7644 (Protokoll)
AuthentifizierungBearer-Token: ein API-Schlüssel des Dienstbenutzers für die Bereitstellung des Arbeitsbereichs (siehe SCIM mit Microsoft Entra ID einrichten)
Medientypapplication/scim+json
Ressourcen/Users, /Groups
FehlerSCIM-Fehlerantworten (RFC 7644 §3.12)

Was SCIM verwaltet und was nicht

mTime trennt den Benutzer (Anmeldung, Rollen, Zugriff) von der bzw. dem Mitarbeitenden und deren Anstellungen:

Benutzer → Mitarbeitende → n Anstellungen

SCIM verwaltet den Benutzer: wer sich anmelden darf, unter welchem Namen und mit welchen Rollen. Mitarbeitende und Anstellungen – Organisationseinheit, Führungskraft, Anstellungsbedingungen, Sollarbeitszeit, Beginn- und Enddatum – sind datierte Daten, mit denen mTime rechnet, und sie kommen aus Ihrer HR-Integration, nicht aus SCIM. Ein SCIM-Benutzer wird über die externalId mit seinem Mitarbeitendendatensatz verknüpft (siehe Wie Benutzer bereitgestellt werden).

Deshalb unterstützt mTime die Enterprise User Extension nicht: department, manager und employeeNumber sind Einzelwerte ohne Gültigkeitsdatum, während eine Person in mTime mehrere datierte Anstellungen haben kann.

Benutzer

Attribute

Schema urn:ietf:params:scim:schemas:core:2.0:User.

AttributLesenAnlegenAktualisierenHinweise
id✅——Von mTime vergeben, unveränderlich
externalId✅✅✅Stabiler Schlüssel (z. B. Personalnummer), eindeutig pro Arbeitsbereich; ein Duplikat liefert 409 uniqueness. Kann zur Zuordnung mit einem Attribut der Mitarbeitenden verknüpft werden
userName✅✅⚠️Die E-Mail-Adresse des Benutzers. Nur änderbar, solange der Benutzer seine Einladung noch nicht aktiviert hat
emails✅✅⚠️Der primäre (oder erste) Wert wird verwendet; gleiche Regel wie bei userName. Wird als einzelne primäre E-Mail-Adresse zurückgegeben
name.givenName, name.familyName❌✅⚠️Werden zum vollständigen Namen zusammengesetzt – nur wenn beide zusammen gesendet werden (in einem name-Objekt oder beide Pfade im selben PATCH). mTime speichert einen einzigen vollständigen Namen und teilt ihn nie auf, daher wird ein PATCH mit nur einem davon ignoriert. Beim Anlegen und bei PUT wird ein einzelner Vor- oder Nachname nur verwendet, wenn es kein name.formatted und kein displayName gibt. Wird beim Lesen nicht zurückgegeben: Der Name kommt als name.formatted zurück
name.formatted✅✅⚠️Vollständiger Name; hat Vorrang vor Vor- und Nachname. Eine Aktualisierung hat bei einem mit einem Mitarbeitendendatensatz verknüpften Benutzer keine sichtbare Wirkung, es sei denn, der IdP bestimmt die Namen der Mitarbeitenden – siehe Welchen Namen SCIM setzt
displayName✅✅⚠️Vollständiger Name. Gleiche Aktualisierungsregel wie bei name.formatted
active✅—✅false sperrt den Benutzer; true schaltet ihn wieder frei
meta.resourceType, meta.location✅——

Alle anderen Attribute von Core User (nickName, title, phoneNumbers, addresses, password, …) und die Enterprise User Extension (urn:ietf:params:scim:schemas:extension:enterprise:2.0:User) werden nicht unterstützt: Sie werden beim Anlegen und Aktualisieren ignoriert und nie zurückgegeben.

Welchen Namen SCIM setzt

mTime zeigt für eine Person einen einzigen Namen: den Namen des Mitarbeitendendatensatzes, wenn der Benutzer damit verknüpft ist, andernfalls den Namen des Benutzers.

  • Ein mit einem Mitarbeitendendatensatz verknüpfter Benutzer zeigt dessen Namen, den Ihre HR-Integration pflegt. Standardmäßig aktualisiert SCIM keinen bestehenden Mitarbeitendendatensatz, ein über SCIM gesendeter Name hat für diesen Benutzer also keine sichtbare Wirkung. Ist Namen des Identitätsanbieters für Mitarbeitende verwenden aktiviert, schreibt jedes Anlegen, PUT oder PATCH mit einem Namen diesen auch in den verknüpften Mitarbeitendendatensatz – siehe Den Namen aus dem Identitätsanbieter für Mitarbeitende verwenden.
  • Ein Benutzer ohne Mitarbeitendendatensatz (etwa ein Entwurf) zeigt seinen eigenen Namen. SCIM setzt ihn beim Anlegen und kann ihn ändern, bis die Person ihre Einladung aktiviert; danach folgt er dem Namen in ihrem eigenen mTime-Konto. Legt eine Rolle später ihren Mitarbeitendendatensatz an, beginnt dieser mit diesem Namen.

Um eine Person umzubenennen, die Mitarbeitende bzw. Mitarbeitender ist, ändern Sie den Namen in Ihrem HR-System – oder, bei aktivierter Einstellung, in Ihrem IdP.

Operationen

OperationUnterstütztVerhalten
POST /Users✅Legt den Benutzer als eingeladen an und sendet die Einladungs-E-Mail. Eine E-Mail-Adresse ist erforderlich (emails oder userName, wenn es eine Adresse ist). Verknüpft mit einem bestehenden Mitarbeitendendatensatz, wenn einer passt; andernfalls wird ein rollenloser Entwurf ohne Mitarbeitendendatensatz und ohne Einladung angelegt. 409, wenn die externalId oder der Mitarbeitendendatensatz bereits vergeben ist
GET /Users/{id}✅
GET /Users?filter=…⚠️Nur attribute eq "value", auf userName oder externalId. Andere Attribute oder Operatoren liefern 400. Kombinierbar mit Seitenweiser Abfrage
GET /Users (ohne Filter)✅Alle Benutzer, seitenweise – siehe Seitenweise Abfrage
PUT /Users/{id}✅Wendet die oben genannten unterstützten Attribute an
PATCH /Users/{id}⚠️add und replace auf active, userName, emails, displayName, name (Objekt), name.givenName, name.familyName, name.formatted, externalId oder ohne Pfad (Teilressource). Ein Pfad darf das Schemapräfix tragen (urn:ietf:params:scim:schemas:core:2.0:User:name.givenName). remove und andere Pfade werden ignoriert
DELETE /Users/{id}✅Löscht das Benutzerkonto (weiche Löschung) und beendet alle Sitzungen. Der Mitarbeitendendatensatz und sein Verlauf bleiben erhalten. Liefert 204

Benutzer mit der Rolle owner können über SCIM weder geändert noch gelöscht werden (403).

Deaktivieren oder löschen?

PATCH active=falseDELETE
Kann sich anmeldenNein – Sitzungen enden sofortNein – Sitzungen enden sofort
BenutzerkontoBleibt erhalten, Status gesperrtGelöscht (weiche Löschung)
Mitarbeitendendatensatz, Zeiteinträge, GenehmigungenBleiben erhaltenBleiben erhalten
RückkehrPATCH active=true stellt denselben Benutzer wieder herEin neues POST legt einen neuen Benutzer an, verknüpft mit demselben Mitarbeitendendatensatz

Gruppen

Gruppen werden Rollen in mTime zugeordnet: Der IdP bestimmt über Existenz und Mitgliedschaft einer Gruppe, die Admins in mTime über die Berechtigungen der Rolle. Siehe Wie Gruppen zu Rollen werden.

Attribute

Schema urn:ietf:params:scim:schemas:core:2.0:Group.

AttributLesenAnlegenAktualisierenHinweise
id✅——Von mTime vergeben
externalId✅✅✅
displayName✅✅✅Verknüpft mit der gleichnamigen Rolle oder legt eine leere benutzerdefinierte Rolle an. Eine Umbenennung benennt die Rolle um
members (value, display)✅✅✅value ist die SCIM-id des Benutzers

Operationen

OperationUnterstütztVerhalten
POST /Groups✅Verknüpft mit der Rolle oder legt sie an
GET /Groups/{id}✅
GET /Groups?filter=…⚠️Nur attribute eq "value", auf displayName oder externalId
GET /Groups (ohne Filter)✅Alle vom IdP verwalteten Rollen, seitenweise – siehe Seitenweise Abfrage
PUT /Groups/{id}✅Ersetzt Name und Mitglieder
PATCH /Groups/{id}✅add, replace und remove auf members (einschließlich members[value eq "…"]) und displayName
DELETE /Groups/{id}✅Entfernt die Rolle bei ihren Mitgliedern. Die Rolle selbst wird nur gelöscht, wenn sie nie von Admins konfiguriert wurde

Seitenweise Abfrage

GET /Users und GET /Groups unterstützen eine indexbasierte seitenweise Abfrage (RFC 7644 §3.4.2.4), mit oder ohne Filter.

ParameterStandardHinweise
startIndex11-basierte Position des ersten Ergebnisses. Werte unter 1 zählen als 1
count200Ergebnisse pro Seite, höchstens 200. count=0 liefert nur totalResults

Die Antwort enthält totalResults (alle Treffer), startIndex und itemsPerPage (die Ergebnisse auf dieser Seite). Fordern Sie die nächste Seite mit startIndex + itemsPerPage an, bis Sie totalResults Ergebnisse haben. Die Ergebnisse kommen in einer festen Reihenfolge, sodass Seiten keine Ergebnisse überspringen oder wiederholen, es sei denn, zwischendurch werden Benutzer oder Gruppen hinzugefügt oder gelöscht.

Discovery-Endpunkte

Alle drei erfordern dasselbe Bearer-Token wie die übrigen SCIM-Endpunkte.

EndpunktInhalt
GET /ServiceProviderConfigFähigkeiten, siehe unten
GET /SchemasCore-Schemas User und Group, beschränkt auf die oben genannten Attribute
GET /ResourceTypesUser (/Users) und Group (/Groups), ohne Schemaerweiterungen
{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"],
  "documentationUri": "https://help.mtime.app",
  "patch": { "supported": true },
  "bulk": { "supported": false, "maxOperations": 0, "maxPayloadSize": 0 },
  "filter": { "supported": true, "maxResults": 200 },
  "changePassword": { "supported": false },
  "sort": { "supported": false },
  "etag": { "supported": false },
  "authenticationSchemes": [
    {
      "type": "oauthbearertoken",
      "name": "OAuth Bearer Token",
      "description": "Bearer token issued for the workspace's provisioning service user",
      "primary": true
    }
  ]
}

Fehlerbehebung

ProblemLösung
400 Unsupported filterVerwenden Sie eq auf userName oder externalId (Benutzer) bzw. displayName oder externalId (Gruppen)
409 uniqueness beim AnlegenEin anderer Benutzer hat bereits diese externalId, oder der Mitarbeitendendatensatz hat bereits einen Benutzer. Suchen Sie den Benutzer mit filter=externalId eq "…" und aktualisieren Sie ihn stattdessen
Eine Änderung des Vor- oder Nachnamens erscheint nichtmTime speichert einen einzigen vollständigen Namen und teilt ihn nie auf, kann also nicht nur eine Hälfte ändern. Senden Sie givenName und familyName zusammen im selben PATCH, oder senden Sie name.formatted oder displayName
Eine Namensänderung aus dem IdP erscheint nichtErwartet bei einem mit einem Mitarbeitendendatensatz verknüpften Benutzer, solange Namen des Identitätsanbieters für Mitarbeitende verwenden deaktiviert ist: Angezeigt wird der Name des Mitarbeitendendatensatzes, der aus Ihrer HR-Integration kommt. Aktivieren Sie die Einstellung, wenn der IdP die Namen der Mitarbeitenden bestimmen soll – siehe Welchen Namen SCIM setzt
Eine Änderung der E-Mail-Adresse erscheint nichtDer Benutzer hat sein Konto bereits aktiviert; seine Anmelde-E-Mail-Adresse wird nicht mehr über die Bereitstellung verwaltet
403 bei einem BenutzerDer Benutzer ist Inhaber des Arbeitsbereichs, und solche Benutzer kann SCIM nicht verwalten