Share via


Administración de una aplicación Microsoft Entra mediante Microsoft Graph

La aplicación debe registrarse en Microsoft Entra ID antes de que el Plataforma de identidad de Microsoft pueda autorizarla para acceder a los datos almacenados en Microsoft Entra o en inquilinos de Microsoft 365. Esta condición se aplica a las aplicaciones que desarrolla usted mismo, a las que posee el inquilino o a las que accede a través de una suscripción activa.

Muchas opciones de configuración de las aplicaciones se registran como objetos a los que se puede acceder, actualizar o eliminar mediante Microsoft Graph. En este artículo, aprenderá a usar Microsoft Graph para administrar objetos de aplicación y entidad de servicio, incluidas las propiedades, los permisos y las asignaciones de roles.

Requisitos previos

Para probar las operaciones de API, necesita los siguientes recursos y privilegios:

  • Un inquilino de Microsoft Entra en funcionamiento.
  • Inicie sesión en el Explorador de Graph como un usuario con privilegios permitidos para crear y administrar aplicaciones en el inquilino.
  • Concédete el permiso delegado con privilegios mínimos indicado para la operación.

Registro de una aplicación con Microsoft Entra ID

La siguiente solicitud crea una aplicación especificando solo la propiedad displayName necesaria.

Permiso delegado con privilegios mínimos: Application.ReadWrite.All.

POST https://graph.microsoft.com/v1.0/applications
Content-type: application/json

{
  "displayName": "My application"
}

La solicitud devuelve una 201 Created respuesta con el objeto application en el cuerpo de la respuesta. A la aplicación se le asigna un identificador único para las aplicaciones del inquilino y un appId que es único globalmente en el ecosistema de Microsoft Entra ID.

Create una entidad de servicio para una aplicación

Permiso delegado con privilegios mínimos: Application.ReadWrite.All.

POST https://graph.microsoft.com/v1.0/servicePrincipals
Content-type: application/json

{
  "appId": "fc876dd1-6bcb-4304-b9b6-18ddf1526b62"
}

La solicitud devuelve una 201 Created respuesta con el objeto de entidad de servicio en el cuerpo de la respuesta.

Direccionamiento de una aplicación o un objeto de entidad de servicio

Puede dirigirse a una aplicación o a una entidad de servicio por su identificador o por su appId, donde id. se conoce como Id. de objeto y appId se conoce como Id. de aplicación (cliente) en el Centro de administración Microsoft Entra. Estas sintaxis son compatibles con todas las operaciones CRUD HTTP en aplicaciones y entidades de servicio.

Para abordar una aplicación o una entidad de servicio por su identificador.

https://graph.microsoft.com/v1.0/applications/{applicationObjectId}
https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipalObjectId}

Para abordar una aplicación o una entidad de servicio por su appId.

https://graph.microsoft.com/v1.0/applications(appId='appId')
https://graph.microsoft.com/v1.0/servicePrincipals(appId='appId')

Configuración de otras propiedades básicas para la aplicación

Permiso delegado con privilegios mínimos: Application.ReadWrite.All.

Configure las siguientes propiedades básicas para la aplicación.

  • Agregue etiquetas para la categorización en la organización. Además, use la HideApp etiqueta para ocultar la aplicación de Aplicaciones y el iniciador de Microsoft 365.
  • Agregue información básica, como el logotipo, los términos de servicio y la declaración de privacidad.
  • Almacenar información de contacto sobre la aplicación
PATCH https://graph.microsoft.com/v1.0/applications/0d0021e2-eaab-4b9f-a5ad-38c55337d63e/
Content-type: application/json

{
    "tags": [
        "HR",
        "Payroll",
        "HideApp"
    ],
    "info": {
        "logoUrl": "https://cdn.pixabay.com/photo/2016/03/21/23/25/link-1271843_1280.png",
        "marketingUrl": "https://www.contoso.com/app/marketing",
        "privacyStatementUrl": "https://www.contoso.com/app/privacy",
        "supportUrl": "https://www.contoso.com/app/support",
        "termsOfServiceUrl": "https://www.contoso.com/app/termsofservice"
    },
    "web": {
        "homePageUrl": "https://www.contoso.com/",
        "logoutUrl": "https://www.contoso.com/frontchannel_logout",
        "redirectUris": [
            "https://localhost"
        ]
    },
    "serviceManagementReference": "Owners aliases: Finance @ contosofinance@contoso.com; The Phone Company HR consulting @ hronsite@thephone-company.com;"
}

Limitar el inicio de sesión de la aplicación a solo las identidades asignadas

Permiso delegado con privilegios mínimos: Application.ReadWrite.All.

PATCH https://graph.microsoft.com/v1.0/servicePrincipals/89473e09-0737-41a1-a0c3-1418d6908bcd

{
    "appRoleAssignmentRequired": true
}

Asignación de permisos a una aplicación

Aunque puede asignar permisos a una aplicación a través de la Centro de administración Microsoft Entra, también puede asignar permisos a través de Microsoft Graph actualizando la propiedad requiredResourceAccess del objeto app. Debe pasar los permisos existentes y nuevos. Pasar solo permisos nuevos sobrescribe y quita los permisos existentes a los que aún no se ha dado su consentimiento.

La asignación de permisos no los concede automáticamente a la aplicación. Todavía debe conceder el consentimiento del administrador mediante el Centro de administración Microsoft Entra. Para conceder permisos sin consentimiento interactivo, consulte Concesión o revocación de permisos de API mediante programación.

Permiso delegado con privilegios mínimos: Application.ReadWrite.All.

PATCH https://graph.microsoft.com/v1.0/applications/581088ba-83c5-4975-b8af-11d2d7a76e98
Content-Type: application/json

{
    "requiredResourceAccess": [
        {
            "resourceAppId": "00000002-0000-0000-c000-000000000000",
            "resourceAccess": [
                {
                    "id": "311a71cc-e848-46a1-bdf8-97ff7156d8e6",
                    "type": "Scope"
                },
                {
                    "id": "3afa6a7d-9b1a-42eb-948e-1650a849e176",
                    "type": "Role"
                }
            ]
        }
    ]
}

Create roles de aplicación

Create roles de aplicación en un objeto de aplicación

Para conservar los roles de aplicación existentes, insclútelos en la solicitud. De lo contrario, se reemplazan por el nuevo objeto .

PATCH https://graph.microsoft.com/v1.0/applications/bbd46130-e957-4c38-a116-d4d02afd1057
Content-Type: application/json

{
    "appRoles": [
        {
            "allowedMemberTypes": [
                "User",
                "Application"
            ],
            "description": "Survey.Read",
            "displayName": "Survey.Read",
            "id": "7a9ddfc4-cc8a-48ea-8275-8ecbffffd5a0",
            "isEnabled": false,
            "origin": "Application",
            "value": "Survey.Read"
        }
    ]
}

Administración de propietarios

Identificación de entidades de servicio y entidades de servicio sin propietario con un propietario

Permiso delegado con privilegios mínimos: Application.ReadWrite.All.

Esta solicitud requiere el encabezado ConsistencyLevel establecido en eventual porque $count está en la solicitud. Para obtener más información sobre el uso de ConsistencyLevel y $count, vea Funcionalidades avanzadas de consulta en objetos de directorio.

Esta solicitud también devuelve el recuento de las aplicaciones que coinciden con la condición de filtro.

GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=owners/$count eq 0 or owners/$count eq 1&$count=true
ConsistencyLevel: eventual

Asignación de un propietario a una aplicación

Permiso delegado con privilegios mínimos: Application.ReadWrite.All.

En la solicitud siguiente, 8afc02cb-4d62-4dba-b536-9f6d73e9be26 es el identificador de objeto de un usuario o entidad de servicio.

POST https://graph.microsoft.com/v1.0/applications/7b45cf6d-9083-4eb2-92c4-a7e090f1fc40/owners/$ref
Content-Type: application/json

{
    "@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/8afc02cb-4d62-4dba-b536-9f6d73e9be26"
}

Asignación de un propietario a una entidad de servicio

Permiso delegado con privilegios mínimos: Application.ReadWrite.All.

La siguiente solicitud hace referencia a la entidad de servicio mediante su appId. 8afc02cb-4d62-4dba-b536-9f6d73e9be26 es el identificador de objeto de un usuario o entidad de servicio.

POST https://graph.microsoft.com/v1.0/servicePrincipals(appId='46e6adf4-a9cf-4b60-9390-0ba6fb00bf6b')/owners/$ref
Content-Type: application/json

{
    "@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/8afc02cb-4d62-4dba-b536-9f6d73e9be26"
}

Bloquear las propiedades confidenciales de las entidades de servicio

La característica de bloqueo de instancia de aplicación le permite proteger las propiedades confidenciales de las aplicaciones multiinquilino contra alteraciones no autorizadas. Se pueden bloquear las siguientes propiedades del objeto de entidad de servicio:

  • keyCredentials donde el tipo de uso es Sign o Verify.
  • passwordCredentials donde el tipo de uso es Sign o Verify.
  • tokenEncryptionKeyId (propiedad).

La característica de bloqueo de instancia de aplicación se administra mediante la propiedad servicePrincipalLockConfiguration del objeto de aplicación de la aplicación multiinquilino.

Para bloquear todas las propiedades confidenciales de una entidad de servicio

Cuando isEnabled y allProperties se establecen en true, incluso si otras propiedades del objeto servicePrincipalLockConfiguration son null, todas las propiedades confidenciales de la entidad de servicio están bloqueadas.

PATCH https://graph.microsoft.com/beta/applications/a0b7f39e-3139-48aa-9397-f46fb63102f7

{
    "servicePrincipalLockConfiguration": {
        "isEnabled": true,
        "allProperties": true
    }
}

Para bloquear propiedades confidenciales específicas de una entidad de servicio

En el ejemplo siguiente se bloquean las propiedades keyCredentials y passwordCredentials de la entidad de servicio y se habilita la característica de bloqueo de instancia de aplicación.

PATCH https://graph.microsoft.com/beta/applications/a0b7f39e-3139-48aa-9397-f46fb63102f7

{
    "servicePrincipalLockConfiguration": {
        "isEnabled": true,
        "credentialsWithUsageSign": true,
        "credentialsWithUsageVerify": true
    }
}