Freigeben über


Hinzufügen benutzerdefinierter Daten zu Ressourcen mithilfe von Erweiterungen

Microsoft Graph bietet einen einzigen API-Endpunkt für den Zugriff auf umfangreiche personenbezogene Daten und Erkenntnisse durch Ressourcen wie user und message. Sie können Microsoft Graph auch erweitern, indem Sie benutzerdefinierte Eigenschaften zu Ressourceninstanzen hinzufügen, ohne dass ein externer Datenspeicher erforderlich ist.

In diesem Artikel wird beschrieben, wie Microsoft Graph die Erweiterung seiner Ressourcen unterstützt, welche Optionen zum Hinzufügen benutzerdefinierter Eigenschaften verfügbar sind und wann diese verwendet werden sollen.

Wichtig

Verwenden Sie Erweiterungen nicht, um vertrauliche personenbezogene Informationen wie Kontoanmeldeinformationen, Behördliche Identifikationsnummern, Karteninhaberdaten, Finanzkontodaten, Gesundheitsdaten oder vertrauliche Hintergrundinformationen zu speichern.

Die in diesem Artikel erwähnten Erweiterungen ähneln nicht den folgenden Features:

Gründe für das Hinzufügen benutzerdefinierter Daten zu Microsoft Graph

  • Als ISV-Entwickler*in möchten Sie möglicherweise Ihre App schlank halten und app-spezifische Profildaten in Microsoft Graph speichern, indem Sie die Ressource user erweitern.
  • Alternativ können Sie den vorhandenen Benutzerprofilspeicher Ihrer App beibehalten und der Benutzerressource einen app-spezifischen Bezeichner hinzufügen.
  • Als Unternehmensentwickler*in können die von Ihnen entwickelten internen Anwendungen auf Personaldaten Ihres Unternehmens zurückgreifen. Die Integration in mehrere Anwendungen kann vereinfacht werden, indem diese benutzerdefinierten Daten in Microsoft Graph gespeichert werden.

Benutzerdefinierte Datenoptionen in Microsoft Graph

Microsoft Graph bietet vier Arten von Erweiterungen zum Hinzufügen von benutzerdefinierten Daten.

  • Erweiterungsattribute
  • Verzeichniserweiterungen (Microsoft Entra ID)
  • Schemaerweiterungen
  • Offene Erweiterungen

Erweiterungsattribute

Microsoft Entra ID bietet einen Satz von 15 Erweiterungsattributen mit vordefinierten Namen für die Benutzer- und Geräteressourcen. Diese Eigenschaften waren ursprünglich benutzerdefinierte Attribute, die in lokalen Active Directory (AD) und Microsoft Exchange bereitgestellt wurden. Sie können sie jetzt jedoch nicht nur für die Synchronisierung von lokalen AD- und Microsoft Exchange-Daten mit Microsoft Entra ID über Microsoft Graph verwenden.

Weitere Informationen zu diesen Attributen in Microsoft Exchange finden Sie unter Benutzerdefinierte Attribute in Exchange Server.

Entwickleroberfläche

Sie können die 15 Erweiterungsattribute verwenden, um Zeichenfolgenwerte auf Benutzer - oder Geräteressourceninstanzen über die Eigenschaften onPremisesExtensionAttributes bzw . extensionAttributes zu speichern. Sie können die Werte beim Erstellen einer neuen Ressource instance oder beim Aktualisieren einer vorhandenen Ressource instance zuweisen. Sie können auch nach den Werten filtern.

Daten in Erweiterungsattributen hinzufügen oder aktualisieren

Das folgende Beispiel zeigt, wie Daten in extensionAttribute1 gespeichert und vorhandene Daten aus extensionAttribute13 über einen Aktualisierungsvorgang mit einer PATCH-Methode gelöscht werden.

PATCH https://graph.microsoft.com/v1.0/users/071cc716-8147-4397-a5ba-b2105951cc0b

{
    "onPremisesExtensionAttributes": {
        "extensionAttribute1": "skypeId.adeleVance",
        "extensionAttribute13": null
    }
}

Die Anforderung gibt ein 204 No Content Antwortobjekt zurück.

Lesen der Erweiterungsattribute

Anforderung
GET https://graph.microsoft.com/v1.0/users?$select=id,displayName,onPremisesExtensionAttributes
Antwort
{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(id,displayName,onPremisesExtensionAttributes)",
    "value": [
        {
            "id": "071cc716-8147-4397-a5ba-b2105951cc0b",
            "displayName": "Adele Vance",
            "onPremisesExtensionAttributes": {
                "extensionAttribute1": "Contractor",
                "extensionAttribute2": "50",
                "extensionAttribute3": null,
                "extensionAttribute4": "1478354",
                "extensionAttribute5": "10239390",
                "extensionAttribute6": null,
                "extensionAttribute7": null,
                "extensionAttribute8": null,
                "extensionAttribute9": null,
                "extensionAttribute10": "11",
                "extensionAttribute11": null,
                "extensionAttribute12": "/o=ExchangeLabs/ou=Exchange Administrative Group (FYDIBOHF47SPDLT)/cn=Recipients/cn=5ee781fc7egc7aa0b9394bddb44e7f04-Adele Vance",
                "extensionAttribute13": null,
                "extensionAttribute14": null,
                "extensionAttribute15": null
            }
        }
    ]
}

Überlegungen zur Verwendung von Erweiterungsattributeigenschaften

Sie können das onPremisesExtensionAttributes-Objekt nur für Objekte aktualisieren, die nicht aus dem lokalen AD synchronisiert werden.

Microsoft Graph definiert bereits die 15 Erweiterungsattribute, und Sie können deren Eigenschaftennamen nicht ändern. Daher können Sie keine benutzerdefinierten Namen wie SkypeId für die Erweiterungsattribute verwenden. Ihre organization müssen die verwendeten Erweiterungsattributeigenschaften nachverfolgen, um zu vermeiden, dass ihre Daten versehentlich überschrieben werden.

Verzeichniserweiterungen (Microsoft Entra ID)

Verzeichniserweiterungen bieten Entwicklern eine stark typisierte, auffindbare und filterbare Erweiterungsoberfläche für Verzeichnisobjekte.

Registrieren Sie Verzeichniserweiterungen für eine Anwendung über den Vorgang Erweiterungseigenschaften erstellen . Sie müssen explizit bestimmte und unterstützte Verzeichnisobjekte als Ziel verwenden. Nachdem ein Benutzer oder Administrator der Anwendung im Mandanten zugestimmt hat, kann sofort auf die Erweiterungseigenschaften im Mandanten zugegriffen werden. Alle autorisierten Anwendungen im Mandanten können Daten für alle Erweiterungseigenschaften lesen und schreiben, die für eine Instanz des Zielverzeichnisobjekts definiert sind.

Eine Liste der Ressourcentypen, die Sie als Zielobjekte für eine Verzeichniserweiterung angeben können, finden Sie unter Vergleich von Erweiterungstypen.

Entwickleroberfläche

Sie verwalten Verzeichniserweiterungsdefinitionen über die extensionProperty-Ressource und die zugehörigen Methoden. Die REST-API fordert An, die Sie zum Verwalten der Ressource verwenden, instance die Daten zu verarbeiten.

Definieren der Verzeichniserweiterung

Bevor Sie einer Ressource instance eine Verzeichniserweiterung hinzufügen können, müssen Sie zuerst die Verzeichniserweiterung definieren.

Anforderung

In der folgenden Anforderung ist die Objekt-ID der Anwendung, 30a5435a-1871-485c-8c7b-65f69e287e7b die besitzer der Verzeichniserweiterung ist. Sie können Verzeichniserweiterungen erstellen, die eine Sammlung von Werten speichern.

POST https://graph.microsoft.com/v1.0/applications/30a5435a-1871-485c-8c7b-65f69e287e7b/extensionProperties

{
    "name": "jobGroupTracker",
    "dataType": "String",
    "targetObjects": [
        "User"
    ]
}
Antwort

Sie erstellen eine Verzeichniserweiterungseigenschaft namens extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker mit einem Erweiterungsnamen, der dieser Benennungskonvention folgt: extension_{appId-without-hyphens}_{extensionProperty-name}.

HTTP/1.1 201 Created
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#applications('30a5435a-1871-485c-8c7b-65f69e287e7b')/extensionProperties/$entity",
    "id": "4e3dbc8f-ca32-41b4-825a-346215d7d20f",
    "deletedDateTime": null,
    "appDisplayName": "HR-sync-app",
    "dataType": "String",
    "isMultiValued": false,
    "isSyncedFromOnPremises": false,
    "name": "extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker",
    "targetObjects": [
        "User"
    ]
}

Einem Zielobjekt eine Verzeichniseigenschaft hinzufügen

Nachdem Sie die Verzeichniserweiterung definiert haben, fügen Sie sie einem instance eines Zielobjekttyps hinzu. Sie können Daten in der Verzeichniserweiterung speichern, wenn Sie eine neue instance des Zielobjekts erstellen oder ein vorhandenes Objekt aktualisieren. Das folgende Beispiel zeigt, wie Beim Erstellen eines neuen Benutzerobjekts Daten in der Verzeichniserweiterung gespeichert werden.

POST https://graph.microsoft.com/v1.0/users

{
    "accountEnabled": true,
    "displayName": "Adele Vance",
    "mailNickname": "AdeleV",
    "userPrincipalName": "AdeleV@contoso.com",
    "passwordProfile": {
        "forceChangePasswordNextSignIn": false,
        "password": "xWwvJ]6NMw+bWH-d"
    },
    "extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker": "JobGroupN"
}

Die Anforderung gibt einen Antwortcode 201 Created und ein user-Objekt im Antworttext zurück.

Abrufen einer Verzeichniserweiterung

Das folgende Beispiel zeigt, wie die Verzeichniserweiterungen und die zugehörigen Daten in einer Ressource instance dargestellt werden. Die Erweiterungseigenschaft wird standardmäßig über den beta Endpunkt zurückgegeben, aber nur über $select den v1.0 Endpunkt ein.

Anforderung

GET https://graph.microsoft.com/beta/users?$select=id,displayName,extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker,extension_b7d8e648520f41d3b9c0fdeb91768a0a_permanent_pensionable

Antwort

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(id,displayName,extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker,extension_b7d8e648520f41d3b9c0fdeb91768a0a_permanent_pensionable)",
    "value": [
        {
            "id": "63384f56-42d2-4aa7-b1d6-b10c78f143a2",
            "displayName": "Adele Vance",
            "extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker": "E4",
            "extension_b7d8e648520f41d3b9c0fdeb91768a0a_permanent_pensionable": true
        }
    ]
}

Aktualisieren oder Löschen von Verzeichniserweiterungen

Verwenden Sie die PATCH-Methode, um den Wert der Verzeichniserweiterung für eine Ressource instance zu aktualisieren oder zu löschen. Um die Erweiterungseigenschaft und den zugehörigen Wert zu löschen, legen Sie ihren Wert auf fest null.

Die folgende Anforderung aktualisiert den Wert einer Verzeichniserweiterung und löscht eine weitere Erweiterungseigenschaft.

PATCH https://graph.microsoft.com/v1.0/users/63384f56-42d2-4aa7-b1d6-b10c78f143a2

{
    "extension_b7d8e648520f41d3b9c0fdeb91768a0a_permanent_pensionable": null,
    "extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker": "E4"
}

Die Anforderung gibt einen 204 No Content Antwortcode zurück.

Überlegungen zur Verwendung von Verzeichniserweiterungen

Wenn Sie versehentlich eine Verzeichniserweiterungsdefinition löschen, können alle in der zugeordneten Eigenschaft gespeicherten Daten nicht mehr wiederhergestellt werden. Um die Daten wiederherzustellen, erstellen Sie in derselben Besitzer-App eine neue Verzeichniserweiterungsdefinition mit demselben Namen wie die gelöschte Definition.

Wenn Sie ein Definitionsobjekt löschen, bevor Sie die entsprechende Erweiterungseigenschaft auf nullaktualisieren, zählt die Eigenschaft auf den Grenzwert von 100 für das Objekt.

Wenn Sie die Definition löschen, bevor Sie Daten in der zugehörigen Erweiterungseigenschaft löschen, gibt es keine Möglichkeit, das Vorhandensein der Erweiterungseigenschaft über Microsoft Graph zu ermitteln, obwohl die nicht wiederherstellbare Eigenschaft auf den Grenzwert von 100 angerechnet wird.

Durch das Löschen einer Besitzer-App im Basismandanten können die zugehörigen Verzeichniserweiterungen und ihre Daten nicht mehr wiederhergestellt werden. Wenn Sie eine Besitzer-App wiederherstellen, werden die Verzeichniserweiterungsdefinitionen wiederhergestellt , aber die Verzeichniserweiterungseigenschaften oder ihre Daten werden nicht sofort auffindbar. da beim Wiederherstellen einer App nicht automatisch der zugeordnete Dienstprinzipal im Mandanten wiederhergestellt wird. Um die Eigenschaften der Verzeichniserweiterung und deren Daten auffindbar zu machen, erstellen Sie entweder einen neuen Dienstprinzipal, oder stellen Sie den gelöschten Dienstprinzipal wieder her. An anderen Mandanten, denen die App zugestimmt hat, werden keine Änderungen vorgenommen.

Schemaerweiterungen

Microsoft Graph-Schemaerweiterungen ähneln konzeptuell Verzeichniserweiterungen. Zunächst definieren Sie Ihre Schemaerweiterung. Verwenden Sie ihn dann, um unterstützte Ressourceninstanzen mit stark typisierten benutzerdefinierten Eigenschaften zu erweitern. Sie können auch den Status Ihrer Schemaerweiterung steuern und sie so für andere Apps erkennbar machen.

Eine Liste der Ressourcentypen, die Schemaerweiterungen unterstützen, finden Sie unter Vergleich von Erweiterungstypen.

Entwickleroberfläche

Wenn Sie eine Schemaerweiterungsdefinition erstellen, müssen Sie einen eindeutigen Namen für die ID angeben. Sie haben zwei Benennungsoptionen:

  • Wenn Sie bereits über eine Vanity .com.net-, - .gov, .edu- oder .org -Domäne verfügen, die mit Ihrem Mandanten überprüft wurde, verwenden Sie den Domänennamen zusammen mit dem Schemanamen, um einen eindeutigen Namen in diesem Format zu definieren: {domainName}_{schemaName}. Wenn Ihre Vanity-Domäne zum Beispiel contoso.com lautet, können Sie eine ID von contoso_mySchema definieren. Diese Option wird dringend empfohlen.
  • Alternativ können Sie die ID auf einen Schemanamen (ohne Domänennamenpräfix) festlegen. Beispiel: mySchema. Microsoft Graph weist Ihnen basierend auf dem angegebenen Namen eine Zeichenfolgen-ID im folgenden Format zu: ext{8-random-alphanumeric-chars}_{schema-name}. Beispiel: extkvbmkofy_mySchema.

Die ID ist der Name des komplexen Typs, der Ihre Daten in der erweiterten Ressource instance speichert.

Nachdem Sie eine Schemaerweiterung registriert haben, können alle Anwendungen im selben Mandanten wie die zugeordnete Besitzeranwendung diese verwenden, wenn sie sich im InDevelopment Zustand befindet. Wenn sie sich Available im Zustand befindet, können sie von allen Anwendungen in einem beliebigen Mandanten verwendet werden. Wie Verzeichniserweiterungen können autorisierte Apps Daten für alle Erweiterungen lesen und schreiben, die für das Zielobjekt definiert sind.

Sie verwalten die Schemaerweiterungsdefinitionen und die Daten in der entsprechenden Schemaerweiterungseigenschaft mithilfe separater API-Vorgänge. Verwenden Sie zum Verwalten der Schemaerweiterungsdaten in der erweiterten Ressourceninstanz dieselbe REST-Anforderung, die Sie zum Verwalten der Ressourceninstanz verwenden.

  • Verwenden Sie POST, um Daten in der Schemaerweiterungseigenschaft zu speichern, wenn Sie einen neuen Benutzer erstellen.
  • Verwenden Sie PATCH, um Daten in der Schemaerweiterungseigenschaft zu speichern oder die gespeicherten Daten zu aktualisieren oder zu löschen.
    • Um Daten aus einer Eigenschaft zu löschen, legen Sie ihren Wert auf fest null.
    • Um Daten aus allen Eigenschaften zu löschen, legen Sie jede Eigenschaft auf fest null. Wenn alle Eigenschaften sind null, wird auch das Schemaerweiterungsobjekt gelöscht.
    • Um eine beliebige Eigenschaft zu aktualisieren, geben Sie nur die geänderten Eigenschaften im Anforderungstext an. Ausgelassene Eigenschaften werden nicht aktualisiert und behalten ihren vorherigen Wert bei.
  • Verwenden Sie GET, um die Schemaerweiterungseigenschaften für alle Benutzer oder einzelne Benutzer im Mandanten zu lesen.

Definieren einer Schemaerweiterung

Anforderung
POST https://graph.microsoft.com/v1.0/schemaExtensions

{
    "id": "graphLearnCourses",
    "description": "Graph Learn training courses extensions",
    "targetTypes": [
        "user"
    ],
    "properties": [
        {
            "name": "courseId",
            "type": "Integer"
        },
        {
            "name": "courseName",
            "type": "String"
        },
        {
            "name": "courseType",
            "type": "String"
        }
    ]
}
Antwort
{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#schemaExtensions/$entity",
    "id": "extkmpdyld2_graphLearnCourses",
    "description": "Graph Learn training courses extensions",
    "targetTypes": [
        "user"
    ],
    "status": "InDevelopment",
    "properties": [
        {
            "name": "courseId",
            "type": "Integer"
        },
        {
            "name": "courseName",
            "type": "String"
        },
        {
            "name": "courseType",
            "type": "String"
        }
    ]
}

Schemaerweiterung zu einer Ressourceninstanz hinzufügen

Nachdem Sie die Schemaerweiterung definiert haben, können Sie die Erweiterungseigenschaft einer instance eines Zielobjekttyps hinzufügen. Sie können Daten in der Schemaerweiterung speichern, wenn Sie eine neue Instanz des Zielobjekts erstellen oder ein bestehendes Objekt aktualisieren. Das folgende Beispiel zeigt, wie Sie beim Erstellen eines neuen User-Objekts Daten in der Eigenschaft Schemaerweiterung speichern.

POST https://graph.microsoft.com/beta/users

{
    "accountEnabled": true,
    "displayName": "Adele Vance",
    "mailNickname": "AdeleV",
    "userPrincipalName": "AdeleV@contoso.com",
    "passwordProfile": {
        "forceChangePasswordNextSignIn": false,
        "password": "xWwvJ]6NMw+bWH-d"
    },
    "extkmpdyld2_graphLearnCourses": {
        "courseId": 100,
        "courseName": "Explore Microsoft Graph",
        "courseType": "Online"
    }
}

Die Anforderung gibt einen 201 Created Antwortcode und ein schemaExtension-Objekt im Antworttext zurück.

Schemaerweiterungseigenschaften aktualisieren oder löschen

Verwenden Sie den PATCH-Vorgang, um eine Schemaerweiterung zu aktualisieren oder eine vorhandene Schemaerweiterung zu löschen. Um die Erweiterungseigenschaft und den zugehörigen Wert aus der Ressourceninstanz zu löschen, legen Sie den Wert auf null.

Das folgende Beispiel löscht den Wert der Eigenschaft courseId und aktualisiert die Eigenschaft courseType. Um die extkmpdyld2_graphLearnCourses Erweiterungseigenschaft vollständig zu löschen, setzen Sie ihren Wert auf null.

PATCH https://graph.microsoft.com/beta/users/0668e673-908b-44ea-861d-0661297e1a3e

{
    "extkmpdyld2_graphLearnCourses": {
        "courseType": "Instructor-led",
        "courseId": null
    }
}

Die Anforderung gibt ein 204 No Content Antwortobjekt zurück.

Schemaerweiterungseigenschaft abrufen

Um die Schemaerweiterungseigenschaften einer Ressourceninstanz zu lesen, geben Sie den Namen der Erweiterung in einer $select Anforderung an.

Anforderung
GET https://graph.microsoft.com/beta/users/0668e673-908b-44ea-861d-0661297e1a3e?$select=id,displayName,extkmpdyld2_graphLearnCourses
Antwort
HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users(id,displayName,extkmpdyld2_graphLearnCourses)/$entity",
    "id": "63384f56-42d2-4aa7-b1d6-b10c78f143a2",
    "displayName": "Adele Vance",
    "extkmpdyld2_graphLearnCourses": {
        "@odata.type": "#microsoft.graph.ComplexExtensionValue",
        "courseType": "Instructor-led",
        "courseName": "Explore Microsoft Graph",
        "courseId": null
    }
}

Überlegungen zur Verwendung von Schemaerweiterungen

Eine Schemaerweiterung muss über eine Besitzer-App verfügen. Sie können den Besitz der Schemaerweiterung nicht einer anderen App neu zuweisen.

Wenn Sie eine Schemaerweiterungsdefinition löschen, ohne die Schemaerweiterung auf festzulegen null, machen Sie die Eigenschaft und die zugehörigen Benutzerdaten nicht wiederherstellbar.

Wenn Sie eine Besitzer-App im Basismandanten löschen, löschen Sie nicht die zugeordnete Schemaerweiterungsdefinition oder die Eigenschaft und die darin gespeicherten Daten. Sie können die Schemaerweiterungseigenschaft für Benutzer weiterhin lesen, löschen oder aktualisieren. Sie können die Schemaerweiterungsdefinition jedoch nicht aktualisieren.

Offene Erweiterungen

Microsoft Graph Open Extensions sind offene Typen, die eine einfache und flexible Möglichkeit bieten, nicht typisierte Daten direkt zu einer Ressourceninstanz hinzuzufügen. Diese Erweiterungen sind nicht stark typisiert, nicht erkennbar oder filterbar.

Eine Liste der Ressourcentypen, die offene Microsoft Graph-Erweiterungen unterstützen, finden Sie unter Vergleich von Erweiterungstypen.

Entwickleroberfläche

Sie können auf geöffnete Erweiterungen und deren Daten über die Erweiterungsnavigationseigenschaft der Ressource instance zugreifen. Mit offenen Erweiterungen können Sie verwandte Eigenschaften gruppierung, um den Zugriff und die Verwaltung zu vereinfachen.

Sie definieren und verwalten offene Erweiterungen für Ressourceninstanzen. Jede geöffnete Erweiterung ist für ihr Objekt eindeutig, sodass Sie kein konsistentes Muster auf alle Objekte anwenden müssen. Beispiel: Im selben Mandanten:

  • Das Benutzerobjekt für Adele kann über eine offene Erweiterung namens socialSettings verfügen, die über drei Eigenschaften verfügt: linkedInProfile, skypeId und xboxGamertag.
  • Das Benutzerobjekt für Allan kann keine offene Erweiterungseigenschaft aufweisen.
  • Das Benutzerobjekt für Alex kann eine offene Erweiterung namens socialSettings mit fünf Eigenschaften haben: theme, color, language, font und fontSize.

Offene Erweiterungseigenschaften können eine beliebige gültige JSON-Struktur aufweisen.

Offene Erweiterung erstellen

Das folgende Beispiel zeigt eine offene Erweiterungsdefinition mit drei Eigenschaften und wie die benutzerdefinierten Eigenschaften und die zugehörigen Daten in einer Ressource instance angezeigt werden.

POST https://graph.microsoft.com/v1.0/users/3fbd929d-8c56-4462-851e-0eb9a7b3a2a5/extensions

{
    "@odata.type": "#microsoft.graph.openTypeExtension",
    "extensionName": "com.contoso.socialSettings",
    "skypeId": "skypeId.AdeleV",
    "linkedInProfile": "www.linkedin.com/in/testlinkedinprofile",
    "xboxGamerTag": "AwesomeAdele",
    "id": "com.contoso.socialSettings"
}

Die Anforderung gibt einen 201 Created Antwortcode und ein openTypeExtension-Objekt im Antworttext zurück.

Eine bestehende offene Erweiterung aktualisieren

Um eine offene Erweiterung zu aktualisieren, müssen Sie alle ihre Eigenschaften im Anforderungstext angeben. Andernfalls werden die nicht angegebenen Eigenschaften aus der geöffneten Erweiterung gelöscht. Sie können eine Eigenschaft explizit auf null festlegen, um sie in der geöffneten Erweiterung beizubehalten.

Die folgende Anforderung gibt nur die Eigenschaften linkedInProfile und xboxGamerTag an. Der Wert der xboxGamerTag-Eigenschaft wird aktualisiert, während die linkedInProfile-Eigenschaft unverändert bleibt. Diese Anforderung löscht auch die nicht spezifizierte Eigenschaft skypeId.

PATCH https://graph.microsoft.com/v1.0/users/3fbd929d-8c56-4462-851e-0eb9a7b3a2a5/extensions/com.contoso.socialSettings

{
    "xboxGamerTag": "FierceAdele",
    "linkedInProfile": "www.linkedin.com/in/testlinkedinprofile"
}

Diese Anforderung gibt einen 204 No Content Antwortcode zurück.

Offene Erweiterungen abrufen

GET https://graph.microsoft.com/v1.0/users/3fbd929d-8c56-4462-851e-0eb9a7b3a2a5/extensions/com.contoso.socialSettings

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('3fbd929d-8c56-4462-851e-0eb9a7b3a2a5')/extensions/$entity",
    "@odata.type": "#microsoft.graph.openTypeExtension",
    "xboxGamerTag": "FierceAdele",
    "linkedInProfile": "www.linkedin.com/in/testlinkedinprofile",
    "id": "com.contoso.socialSettings"
}

Überlegungen zur Verwendung von offenen Erweiterungen

Das Löschen einer Ersteller-App wirkt sich nicht auf die geöffnete Erweiterung oder die darin gespeicherten Daten aus.

Vergleich von Erweiterungstypen

In der folgenden Tabelle werden die Erweiterungstypen verglichen. Verwenden Sie diesen Vergleich, um zu entscheiden, welche Option für Ihr Szenario am besten geeignet ist.

Funktion Erweiterungsattribute 1–15 Verzeichnisschemaerweiterungen Schemaerweiterungen Offene Erweiterungen
Unterstützte Ressourcentypen user
device
user
Gruppe
administrativeUnit
application
device
organization
user
Gruppe
administrativeUnit
contact
device
event (Benutzer*innen- und Gruppenkalender)
message
organization
post
user
Gruppe
contact
device
event1 (Benutzer*innen- und Gruppenkalender)
message
organization
post
todoTask
todoTaskList
Streng typisiert Nein Ja Ja Nein
Filterbar Ja Ja Ja Nein
Kann eine Sammlung speichern Nein Ja Nein Ja
An eine "Besitzer"-Anwendung gebunden Nein Ja Ja Nein
Bereichsdefinition Zuweisen von Werten zu vordefinierten Eigenschaften des Zielobjekts instance Definieren Sie auf Anwendungsebene, und weisen Sie dann dem Zielobjekt instance Definieren Sie für den Mandanten, und weisen Sie dann dem Zielobjekt instance Definieren und Zuweisen für das Objekt instance
Auffindbarkeit Auswählen oder Filtern des Zielobjekts instance AUFLISTEN, Auswählen oder Filtern auf Anwendungsebene nach GET-Definitionen; Auswählen oder Filtern des Zielobjekts für GET-Zuweisungen LISTE oder Filter, um mandantenweite Definitionen abzurufen; Auswählen oder Filtern des Zielobjekts für GET-Zuweisungen AUFLISTEN oder Auswählen des Zielobjekts für GET-Definitionen und -Zuweisungen
Verwaltet über Microsoft Graph
Exchange Admin-Center
Microsoft Graph Microsoft Graph Microsoft Graph
Mit AD connect Daten von lokal zu Erweiterungen synchronisieren Ja, für Benutzer*innen Ja Nein Nein
Dynamische Mitgliedschaftsregeln mit benutzerdefinierten Erweiterungseigenschaften und Daten erstellen Ja Ja Nein Nein
Verwendbar für die Anpassung von Token-Ansprüchen Ja Ja (1, 2) Nein Nein
Verfügbar in Azure AD B2C Ja Ja Ja Ja
Verfügbar in Microsoft Entra External ID Ja Ja Ja Ja
Einschränkungen
  • 15 vordefinierte Attribute pro Benutzer*innen- oder Geräteressourceninstanz
  • 100 Erweiterungswerte pro Ressourceninstanz
  • Maximal fünf Definitionen pro Besitzer-App
  • 100 Erweiterungswerte pro Ressourceninstanz (nur Verzeichnisobjekte)
  • Zwei offene Erweiterungen pro Creator App pro Ressourceninstanz 2
  • Max. von 2 KB pro geöffneter Erweiterung2
  • Bei Outlook-Ressourcen wird jede geöffnete Erweiterung in einer MAPI-benannten Eigenschaft3 gespeichert
  • Hinweis

    1 Aufgrund einer vorhandenen Diensteinschränkung können Stellvertretungen keine ereignisse mit erweiterungsbezogener Erweiterung in freigegebenen Postfachkalendern erstellen. Versuche, dies zu tun, führen zu einer ErrorAccessDenied Antwort.

    2 Diese Grenzwerte für offene Erweiterungen gelten für die folgenden Verzeichnisressourcen: Benutzer, Gruppe, Gerät und organization.

    3 Jede geöffnete Erweiterung wird in einer MAPI benannten Eigenschaft gespeichert, die eine begrenzte Ressource im Postfach eines Benutzers ist. Diese Einschränkung gilt für die folgenden Outlook-Ressourcen: message, event und contact

    Sie können alle Erweiterungen verwalten, wenn Sie sich mit einem Geschäfts-, Schul- oder Unikonto anmelden. Außerdem können Sie offene Erweiterungen für die folgenden Ressourcen verwalten, wenn Sie sich mit einem persönlichen Microsoft Account anmelden: event, post, group, message, contact und user.

    Berechtigungen und Berechtigungen

    Zum Verwalten von Erweiterungsdaten für eine Ressource instance benötigt Ihre App dieselben Berechtigungen, die sie zum Lesen oder Schreiben aus dieser Ressource instance verwendet. Beispielsweise kann eine App in einem delegierten Szenario die Erweiterungsdaten eines Benutzers nur aktualisieren, wenn ihr die Berechtigung User.ReadWrite.All erteilt wurde und der angemeldete Benutzer über eine unterstützte Microsoft Entra Administratorrolle verfügt.