Agregar datos personalizados a los recursos mediante extensiones

Microsoft Graph proporciona un único punto de conexión de API para acceder a datos e información enriquecidos centrados en las personas a través de recursos como el usuario y el mensaje. También puede ampliar Microsoft Graph agregando propiedades personalizadas a instancias de recursos sin necesidad de un almacén de datos externo.

En este artículo, trataremos cómo Microsoft Graph admite la ampliación de sus recursos, las opciones disponibles para agregar propiedades personalizadas y cuándo usarlas.

Importante

No debe utilizar extensiones para almacenar información de identificación personal confidencial, como credenciales de cuenta, números de identificación gubernamentales, datos de propietarios de tarjetas de crédito, datos de cuentas bancarias, información médica o antecedentes confidenciales.

Las extensiones mencionadas en este artículo no son similares a los atributos de seguridad personalizados de Azure AD. Para comprender sus diferencias, consulte ¿Cómo se comparan los atributos de seguridad personalizados con las extensiones de directorio?.

¿Por qué agregar datos personalizados a Microsoft Graph?

  • Como desarrollador de ISV, puede que no desee que su aplicación ocupe mucho espacio y almacenar datos específicos del usuario específico de la aplicación en Microsoft Graph extendiendo el recurso usuario.
  • O puede que desee conservar el almacenamiento de perfiles de usuario de la aplicación existente y agregar un identificador específico de la aplicación al recurso usuario.
  • Como desarrollador empresarial, las aplicaciones internas que compila pueden depender de los datos específicos de RR. HH de su organización. La integración dentro de varias aplicaciones se puede simplificar almacenando estos datos personalizados en Microsoft Graph.

Opciones de datos personalizadas en Microsoft Graph

Microsoft Graph ofrece cuatro tipos de extensiones para agregar datos personalizados.

  • Atributos de extensión
  • Extensiones de directorio (Azure AD)
  • Extensiones de esquema
  • Extensiones abiertas

Atributos de extensión

Azure AD ofrece un conjunto de 15 atributos de extensión con nombres predefinidos en los recursos de usuario y dispositivo . Estas propiedades eran inicialmente atributos personalizados proporcionados en Active Directory (AD) local y Microsoft Exchange. Sin embargo, ahora se pueden usar para más que sincronizar datos locales de AD y Microsoft Exchange con Azure AD a través de Microsoft Graph.

Experiencia del desarrollador

Puede usar los 15 atributos de extensión para almacenar valores String en instancias de recursos usuario o dispositivo, a través de las propiedades onPremisesExtensionAttributes y extensionAttributes respectivamente. Los valores se pueden asignar al crear una nueva instancia de recurso o al actualizar una instancia de recurso existente. También se pueden filtrar.

Agregar o actualizar datos en atributos de extensión

En el siguiente ejemplo se muestra cómo almacenar datos en extensionAttribute1 y eliminar los datos existentes de extensionAttribute12 mediante una operación de actualización con un método PATCH.

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

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

La solicitud devuelve un objeto de respuesta 204 No Content.

Recuperación de datos de los atributos de extensión 1-15
Solicitud
GET https://graph.microsoft.com/v1.0/users?$select=id,displayName,onPremisesExtensionAttributes
Respuesta
{
    "@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
            }
        }
    ]
}

Extensiones de directorio (Azure AD)

Las extensiones de Directory proporcionan a los desarrolladores una experiencia de extensión fuertemente tipada, reconocible y filtrable para objetos de directorio.

Las extensiones de directorio se registran primero en una aplicación mediante la operación Create extensionProperty y deben tener como destino explícitamente a objetos de directorio específicos. Una vez que un usuario o un administrador ha dado su consentimiento a la aplicación, las propiedades de la extensión se vuelven accesibles inmediatamente en el inquilino. Todas las aplicaciones autorizadas del inquilino pueden leer y escribir datos en las propiedades de extensión definidas en una instancia del objeto de directorio de destino.

Para obtener la lista de tipos de recursos que se pueden especificar como objetos de destino para una extensión de directorio, vea Elegir un tipo de extensión para la aplicación.

Experiencia del desarrollador

Las definiciones de extensión de directorio se administran a través del recurso extensionProperty y sus métodos asociados. Los datos se administran a través de las mismas solicitudes REST que se usan para administrar la instancia de recurso.

Crear una definición de extensión de directorio

Antes de poder agregar una extensión de directorio a una instancia de recurso, debe crear primero una definición de extensión de directorio.

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

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

Se crea una propiedad de extensión de directorio denominada extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker con un nombre de extensión que sigue la siguiente convención de nomenclatura: 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",
    "isSyncedFromOnPremises": false,
    "name": "extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker",
    "targetObjects": [
        "User"
    ]
}
Agregar una propiedad de extensión de directorio a un objeto de destino

Después de crear la definición de extensión de directorio, podrá agregarla a una instancia de un tipo de objeto de destino. Puede almacenar datos en la propiedad de extensión de directorio al crear una nueva instancia del objeto de destino o al actualizar un objeto existente. En el ejemplo siguiente se muestra cómo almacenar datos en la propiedad de extensión de directorio al crear un nuevo objeto de usuario.

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"
}

La solicitud devuelve un código de respuesta 201 Created y un objeto user en el cuerpo de la respuesta.

Recuperar una propiedad de extensión de directorio

En el siguiente ejemplo se muestra cómo se presentan las propiedades de la extensión de directorio y los datos asociados en una instancia de recurso. La propiedad de extensión se devolverá de forma predeterminada a través del punto de conexión beta, pero solo en $select través del punto de conexión v1.0.

Solicitud
GET https://graph.microsoft.com/beta/users?$select=id,displayName,extension_b7d8e648520f41d3b9c0fdeb91768a0a_jobGroupTracker,extension_b7d8e648520f41d3b9c0fdeb91768a0a_permanent_pensionable
Respuesta
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
        }
    ]
}
Actualizar o eliminar propiedades de extensión de directorio

Para actualizar o eliminar el valor de la propiedad de extensión de directorio de una instancia de recurso, use el método PATCH. Para eliminar la propiedad de extensión y su valor asociado de la instancia de recurso, establezca su valor en null.

La siguiente solicitud actualiza el valor de una propiedad de extensión de directorio y elimina otra propiedad de extensión.

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

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

La solicitud devuelve un código de respuesta 204 No Content.

Extensiones de esquema

Las extensiones de esquema de Microsoft Graph son conceptualmente similares a las extensiones de directorio. En primer lugar, cree su definición de extensión de esquema. A continuación, úsela para ampliar las instancias de recursos admitidas con propiedades personalizadas fuertemente tipadas. Además, es posible controlar el estado de su extensión de esquema y permitir que sea reconocible por otras aplicaciones.

Para obtener la lista de tipos de recursos que admiten extensiones de esquema, vea Elegir un tipo de extensión para su aplicación.

Experiencia del desarrollador

Al crear una definición de extensión de esquema, debe proporcionar un nombre único para su id. Existen dos opciones de nomenclaturas:

  • Si ya tiene un dominio de cortesía .com,.net, .gov, .edu o .org que haya comprobado con su inquilino, puede usar el nombre de dominio junto con el nombre de esquema para definir un nombre único, con este formato {domainName}_{schemaName}. Por ejemplo, si su dominio de cortesía es contoso.com, puede definir un id. de contoso_mySchema. Esta opción es muy recomendable.
  • Como alternativa, puede establecer el identificador en un nombre de esquema (sin un prefijo de nombre de dominio). Por ejemplo, mySchema. Microsoft Graph le asignará un Id. de cadena en función del nombre proporcionado, en este formato: ext{8-random-alphanumeric-chars}_{schema-name}. Por ejemplo, extkvbmkofy_mySchema.

El Id. será el nombre del tipo complejo que almacenará sus datos en la instancia de recursos extendidos.

Una vez que se registra una extensión de esquema, está disponible para ser utilizada por todas las aplicaciones en el mismo inquilino que la aplicación propietaria asociada (cuando está en el estado InDevelopment) o por todas las aplicaciones en cualquier inquilino (cuando está en el estado Available). Al igual que las extensiones de directorio, las aplicaciones autorizadas tienen la capacidad de leer y escribir datos en cualquier extensión definida en el objeto de destino.

A diferencia de las extensiones abiertas, se administran las definiciones de extensión de esquema y sus datos en la instancia de recurso extendida como conjuntos independientes de operaciones de API. Para administrar los datos de extensión de esquema en la instancia de recurso extendida, use la misma solicitud REST que se usa para administrar la instancia de recurso.

  • Use POST para almacenar datos en la propiedad de extensión de esquema al crear un nuevo usuario.
  • Use PATCH para almacenar datos en la propiedad de extensión de esquema o actualizar o eliminar los datos almacenados.
    • Para eliminar datos de una propiedad, establezca su valor en null.
    • Para eliminar datos de todas las propiedades, establezca su valor en null. Si todas las propiedades son null, también se elimina el objeto de extensión de esquema.
    • Para actualizar cualquier propiedad, debe especificar todas las propiedades del cuerpo de la solicitud. De lo contrario, Microsoft Graph actualizará las propiedades no especificadas a null.
  • Use GET para leer las propiedades de extensión de esquema para todos los usuarios o usuarios individuales del inquilino.
Crear una definición de extensión de esquema.
Solicitud
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"
        }
    ]
}
Respuesta
{
    "@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"
        }
    ]
}
Agregar una extensión de esquema a una instancia de recurso

Después de crear la definición de extensión de esquema, ahora podrá agregar la propiedad de extensión a una instancia de un tipo de objeto de destino. Puede almacenar datos en la extensión de esquema al crear una nueva instancia del objeto de destino o al actualizar un objeto existente. En el siguiente ejemplo se muestra cómo almacenar datos en la propiedad de extensión de esquema al crear un nuevo objeto de usuario.

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

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

La solicitud devuelve un código de respuesta 201 Created y un objeto schemaExtension en el cuerpo de la respuesta

Actualizar o eliminar una propiedad de extensión de esquema

Use la operación PATCH para actualizar una propiedad de extensión de esquema o eliminar un objeto de extensión de esquema existente. Para eliminar la propiedad de extensión y su valor asociado de la instancia de recurso, establezca su valor en null.

En el siguiente ejemplo se elimina el valor de la propiedad courseId y se actualiza la propiedad courseType. Para eliminar la propiedad de extensión extkmpdyld2_graphLearnCourses en su totalidad, establezca su valor en null.

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

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

La solicitud devuelve un objeto de respuesta 204 No Content.

Recuperar la propiedad de extensión de esquema

Para leer las propiedades de extensión de esquema en una instancia de recurso, especifique el nombre de la extensión en una solicitud $select.

Solicitud
GET https://graph.microsoft.com/beta/users/0668e673-908b-44ea-861d-0661297e1a3e?$select=id,displayName,extkmpdyld2_graphLearnCourses
Respuesta
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
    }
}

Para obtener más información sobre cómo usar extensiones de esquema para agregar propiedades personalizadas y datos asociados, vea el tipo de recurso schemaExtension y Agregar propiedades personalizadas a grupos mediante extensiones de esquema.

Extensiones abiertas

Las extensiones abiertas de Microsoft Graph son tipados abiertos que ofrecen una forma flexible de agregar datos de la aplicación sin tipado directamente a una instancia de recurso. Estas extensiones no son fuertemente tipadas, detectables ni filtrables.

Para obtener la lista de tipos de recursos que admiten extensiones abiertas de Microsoft Graph, vea Elegir un tipo de extensión para la aplicación.

Experiencia del desarrollador

Las extensiones abiertas, junto con sus datos personalizados, son accesibles a través de la propiedad de navegación extensions de la instancia del recurso. Permiten agrupar propiedades relacionadas para facilitar el acceso y la administración.

Las definiciones de extensiones abiertas se crean y administran sobre la marcha en objetos de usuario. Se consideran únicos para cada usuario y no es necesario aplicar un patrón coherente universalmente para todos los usuarios. Por ejemplo, en el mismo inquilino:

  • El objeto de usuario de Adele puede tener una extensión abierta denominada socialSettings que tiene tres propiedades: linkedInProfile, skypeId y xboxGamertag.
  • El objeto de usuario de Bruno no puede tener ninguna propiedad de extensión abierta.
  • El objeto de usuario de Alex puede tener una extensión abierta denominada socialSettings con cinco propiedades: theme, color, language, font y fontSize.

La propiedad extensionName es la única propiedad predefinida y modificable una extensión abierta. Al crear una extensión abierta, debe asignar a la propiedad NombreExtensión un nombre que sea único dentro del inquilino. Una forma de hacerlo es usar un método inverso del formato de nombres de dominio (DNS) que dependa de su propio dominio, por ejemplo, Com.Contoso.ContactInfo. No use el dominio de Microsoft (Com.Microsoft o Com.OnMicrosoft) en un nombre de extensión.

Crear una extensión abierta

En el siguiente ejemplo se muestra una definición de extensión abierta con tres propiedades y cómo se presentan las propiedades personalizadas y los datos asociados en una instancia de recurso.

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"
}

La solicitud devuelve un código de respuesta 201 Created y un objeto openTypeExtension en el cuerpo de la respuesta.

Actualizar una extensión abierta existente

Para actualizar una extensión abierta, debe especificar todas sus propiedades en el cuerpo de la solicitud. De lo contrario, las propiedades no especificadas se actualizarán a null y se eliminarán de la extensión abierta.

La siguiente solicitud especifica solo las propiedades linkedInProfile y xboxGamerTag. El valor de la propiedad xboxGamerTag se está actualizando mientras que la propiedad linkedInProfile sigue siendo la misma. Esta solicitud también elimina la propiedad skypeId no especificada.

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"
}

Esta solicitud devuelve un código de respuesta 204 No Content.

Recuperar las extensiones abiertas
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"
}

Para obtener más información sobre cómo usar extensiones abiertas para agregar propiedades personalizadas y datos asociados, vea el tipo de recurso openTypeExtension y Agregar propiedades personalizadas a los usuarios mediante extensiones abiertas.

Elegir un tipo de extensión para su aplicación

La tabla siguiente contrasta y compara los tipos de extensión, lo que debería ayudarle a decidir qué opción es más adecuada para su escenario.

Funcionalidad Atributos de extensión 1 a 15 Extensiones de directorio Extensiones de esquema Extensiones abiertas
Tipos de recursos admitidos usuario
dispositivo
user
groupadministrativeUnit
application
dispositivo
organization
user
groupadministrativeUnit
contact
dispositivo
event (calendarios de usuario y grupo)
message
organization
post
user
Grupo
contact
dispositivo
event1 (calendarios de usuario y grupo)
message
organization
post
todoTask
todoTaskList
Fuertemente tipado No No
Filterable No
Administrado a través de Microsoft Graph
Centro de administración de Exchange
Microsoft Graph Microsoft Graph Microsoft Graph
Sincronización de datos del entorno local con extensiones mediante AD Connect Sí, para usuarios No No
Crear reglas de pertenencia dinámica mediante datos y propiedades de extensión personalizados No No
Se puede utilizar para personalizar las solicitudes de token No No
Disponible en Azure AD B2C
Límites
  • 15 atributos predefinidos por instancia de recurso de usuario o dispositivo
  • 100 valores de extensión por instancia de recurso
  • Un máximo de cinco definiciones por aplicación propietaria
  • 100 valores de extensión por instancia de recurso (solo objetos de directorio)
  • Dos extensiones abiertas por aplicación creadora por instancia de recurso 2
  • Máx. de 2 Kb por extensión abierta2
  • Para los recursos de Outlook, cada extensión abierta se almacena en una propiedad con nombre MAPI3.
  • Nota:

    1 Debido a una limitación de servicio existente, los delegados no pueden crear eventos anexados por extensión abierta en calendarios de buzones compartidos. Los intentos de hacerlo producirán una ErrorAccessDenied respuesta.

    2 Estos límites en las extensiones abiertas se aplican a los siguientes recursos de directorio: usuario, grupo, dispositivo y organización.

    3 Cada extensión abierta se almacena en una propiedad con nombre MAPI, que es un recurso limitado en el buzón de correo de un usuario. Este límite se aplica a los siguientes recursos de Outlook: message, event y contact

    Puede administrar todas las extensiones cuando haya iniciado sesión con una cuenta profesional o educativa. Además, puede administrar extensiones abiertas para los siguientes recursos al iniciar sesión con una cuenta Microsoft personal: event, post, group, message, contact y user.

    Consideraciones sobre el uso de propiedades de atributo de extensión

    El objeto onPremisesExtensionAttributes solo se puede actualizar para los objetos que no se sincronizan desde AD local.

    Los 15 atributos de extensión ya están predefinidos en Microsoft Graph y sus nombres de propiedad no se pueden cambiar. Por lo tanto, no puede usar nombres personalizados como SkypeId para los atributos de extensión. Esto requiere que usted y la organización tengan en cuenta las propiedades del atributo de extensión que están en uso para que otras aplicaciones no sobrescriban involuntariamente los valores.

    Consideraciones para usar extensiones de directorio

    Si elimina accidentalmente una definición de extensión de directorio, los datos almacenados en la propiedad asociada no se pueden detectar. Para resolver esto, cree una nueva definición de extensión de directorio en la misma aplicación propietaria y con exactamente el mismo nombre que la definición eliminada.

    Cuando se elimina el objeto de definición antes de que la propiedad de extensión correspondiente se actualice a null, la propiedad seguirá contando con respecto al límite de 100 para el objeto .

    Cuando se elimina la definición antes de que se eliminen los datos de la propiedad de extensión asociada, no hay ninguna manera de saber la existencia de la propiedad de extensión a través de Microsoft Graph, aunque la propiedad no detectable cuente con el límite de 100.

    La eliminación de una aplicación de propietario en el inquilino principal hace que las propiedades de extensión de directorio asociadas y sus datos no se puedan detectar. Restaurar una aplicación de propietario restaura las definiciones de extensión de directorio , pero no hace que las propiedades de la extensión de directorio o sus datos se puedan detectar inmediatamente. Esto se debe a que la restauración de una aplicación no restaura automáticamente la entidad de servicio asociada en el inquilino. Para que las propiedades de la extensión de directorio y sus datos sean reconocibles, cree una nueva entidad de servicio o restaure la entidad de servicio eliminada. No se realizan cambios en otros inquilinos en los que se ha dado su consentimiento a la aplicación.

    Consideraciones sobre el uso de extensiones de esquema

    Una extensión de esquema debe tener una aplicación de propietario. La propiedad de la extensión de esquema no se puede reasignar a otra aplicación.

    La eliminación de una definición de extensión de esquema sin establecer la extensión de esquema en null hace que la propiedad y sus datos de usuario asociados no se puedan detectar.

    La eliminación de una aplicación de propietario en el inquilino principal no elimina la definición de extensión de esquema asociada ni la propiedad ni los datos que almacena. La propiedad de extensión de esquema todavía se puede leer, eliminar o actualizar para los usuarios. Sin embargo, la definición de extensión de esquema no se puede actualizar.

    Consideraciones sobre el uso de extensiones abiertas

    La eliminación de una aplicación creadora no afecta a la extensión abierta y a los datos que almacena.

    Permisos

    Los mismos permisos necesarios para leer de o escribir en un recurso específico, también son necesarios para hacerlo en cualquier extensión de datos de dicho recurso. Por ejemplo, para que una aplicación pueda actualizar el perfil de cualquier usuario con datos personalizados de la aplicación, esta debe tener el permiso User.ReadWrite.all.

    Limitaciones conocidas

    Para ver las limitaciones conocidas al usar las extensiones, consulte la sección de extensiones del artículo de problemas conocidos.

    Pasos siguientes