Hinzufügen von benutzerdefinierten 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 zur Speicherung vertraulicher personenbezogener Informationen wie Kontoanmeldeinformationen, Behördenkennnummern, Karteninhaberdaten, Bankkontonummern, Krankendaten oder vertraulichen Hintergrundinformationen.

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 jetzt jedoch nicht nur für die Synchronisierung von lokalen AD- und Microsoft Exchange-Daten mit Microsoft Entra ID über Microsoft Graph verwendet werden.

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 String-Werte auf die Ressourceninstanzen user oder device zu speichern, und zwar über die Eigenschaften onPremisesExtensionAttributes und extensionAttributes. 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

Das onPremisesExtensionAttributes-Objekt kann nur für Objekte aktualisiert werden, die nicht aus dem lokalen AD synchronisiert werden.

Die 15 Erweiterungsattribute sind bereits in Microsoft Graph vordefiniert, und ihre Eigenschaftennamen können nicht geändert werden. Daher können Sie keine benutzerdefinierten Namen wie SkypeId für die Erweiterungsattribute verwenden. Ihre organization müssen daher 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 Erweiterungserfahrung für Verzeichnisobjekte.

Verzeichniserweiterungen werden zuerst über den Vorgang Erweiterungseigenschaften erstellen in einer Anwendung registriert und müssen explizit auf bestimmte und unterstützte Verzeichnisobjekte ausgerichtet sein. 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 als Zielobjekte für eine Verzeichniserweiterung angegeben werden können, finden Sie unter Vergleich von Erweiterungstypen.

Entwickleroberfläche

Verzeichniserweiterungsdefinitionen werden über die Ressource extensionProperty und die zugehörigen Methoden verwaltet. Die Daten werden über die REST-API-Anforderungen verwaltet, die Sie zum Verwalten der Ressource instance verwenden.

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

Eine Verzeichniserweiterungseigenschaft namens extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker wird mit einem Erweiterungsnamen erstellt, der der folgenden 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, können Sie sie nun einem instance eines Zielobjekttyps hinzufügen. 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 ein Definitionsobjekt gelöscht wird, bevor die entsprechende Erweiterungseigenschaft auf nullaktualisiert wird, zählt die Eigenschaft auf den Grenzwert von 100 für das Objekt.

Wenn die Definition gelöscht wird, bevor Daten in der zugehörigen Erweiterungseigenschaft gelöscht werden, 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. Es werden KEINE Änderungen an anderen Mandanten vorgenommen, für die die App zugestimmt wurde.

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

Beim Erstellen einer Schemaerweiterungsdefinition müssen Sie einen eindeutigen Namen für die ID angeben. Es stehen zwei Benennungsoptionen zur Verfügung:

  • Wenn Sie bereits über eine Vanity .com,.net, .gov, , .eduoder eine .org Domäne verfügen, die mit Ihrem Mandanten überprüft wurde, können Sie den Domänennamen zusammen mit dem Schemanamen verwenden, um einen eindeutigen Namen in diesem Format {domainName}_{schemaName} zu definieren. 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, ist sie für alle Anwendungen im selben Mandanten wie die zugeordnete Besitzeranwendung (im InDevelopment Zustand) oder für alle Anwendungen in einem beliebigen Mandanten (im Available Zustand) verfügbar. Wie Verzeichniserweiterungen haben autorisierte Apps die Möglichkeit, Daten für alle Erweiterungen zu lesen und zu 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 Entweder 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 nun einem 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. Der Besitz der Schemaerweiterung kann nicht einer anderen App zugewiesen werden.

Durch das Löschen einer Schemaerweiterungsdefinition ohne Festlegen der Schemaerweiterung auf null können die Eigenschaft und die zugehörigen Benutzerdaten nicht mehr auffindbar sein.

Durch das Löschen einer Besitzer-App im Basismandanten werden weder die zugeordnete Schemaerweiterungsdefinition noch die Eigenschaft und die darin gespeicherten Daten gelöscht. Die Schemaerweiterungseigenschaft kann für Benutzer weiterhin gelesen, gelöscht oder aktualisiert werden. Die Schemaerweiterungsdefinition kann jedoch nicht aktualisiert werden.

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

Auf offene Erweiterungen und ihre Daten können Sie über die Navigationseigenschaft extensions der Ressourceninstanz zugreifen. So können Sie verwandte Eigenschaften gruppieren, um den Zugriff und die Verwaltung zu erleichtern.

Sie definieren und verwalten offene Erweiterungen on the fly für Ressourceninstanzen. Sie gelten als eindeutig für jedes Objekt, und Sie müssen kein universell konsistentes Muster für alle Objekte anwenden. 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 Bruno darf 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.

Darüber hinaus können offene Erweiterungseigenschaften 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 zugeordneten Daten für eine Ressource instance dargestellt 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 jedoch explizit auf festlegen, um null sie in der geöffneten Erweiterung beizubehalten.

Die folgende Anforderung gibt nur die Eigenschaften linkedInProfile und xboxGamerTag an. Der Wert der Eigenschaft xboxGamerTag wird aktualisiert, während die Eigenschaft linkedInProfile gleich 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 und die gespeicherten Daten aus.

Vergleich von Erweiterungstypen

In der folgenden Tabelle werden die Erweiterungstypen verglichen, mit denen Sie entscheiden können, 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
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 bestehenden Diensteinschränkung können Delegierte keine offenen, mit einer Erweiterung versehenen Termine in gemeinsamen Postfach-Kalendern 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 Arbeits- oder Schulkonto angemeldet haben. 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

    Die gleichen Berechtigungen, die Ihre App benötigt, um aus einer Ressource zu lesen oder in eine Ressource zu schreiben instance sind auch erforderlich, um Alle Erweiterungsdaten für diese Ressource instance zu verwalten. In einem delegierten Szenario kann eine App beispielsweise nur die Erweiterungsdaten eines Benutzers aktualisieren, wenn ihr die Berechtigung User.ReadWrite.All erteilt wurde und der angemeldete Benutzer über eine unterstützte Microsoft Entra Administratorrolle verfügt.