Compartir a través de


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

La aplicación debe estar registrada en Microsoft Entra ID antes de que la plataforma de identidad de Microsoft pueda autorizarla para acceder a los datos almacenados en la nube de Microsoft. 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 los detalles de los objetos de la aplicación y la 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 el identificador de Microsoft Entra

La siguiente solicitud crea una aplicación especificando solo la propiedad displayName necesaria. A otras propiedades se les asignan los valores predeterminados.

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.

Creación de 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 de 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')

Además, puede abordar un objeto de aplicación único su uniqueName. Puede usar esta propiedad para crear una aplicación con el nombre único si no existe o actualizarla si existe; una operación denominada "Upsert".

Cree una aplicación con el uniqueName especificado si no existe; de lo contrario, actualícela.

PATCH https://graph.microsoft.com/v1.0/applications(uniqueName='{uniqueName}')
Content-Type: application/json
Prefer: create-if-missing

{
  "displayName": "Display name"
}

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 Mis 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

La siguiente operación limita las identidades que pueden iniciar sesión en una aplicación solo a aquellas a las que se asignan todos los roles de la aplicación.

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 del Centro de administración de Microsoft Entra, también puede asignar permisos a través de Microsoft Graph actualizando la propiedad requiredResourceAccess del objeto de aplicación. 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 de 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"
                }
            ]
        }
    ]
}

Creación de roles de aplicación

Creación de 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. También puede hacer referencia a él mediante el identificador de objeto en el patrón ../servicePrincipals/{bject ID}/owners/$ref. 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 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
    }
}

Configuración de entidades de certificación de confianza para aplicaciones

Puede restringir el uso de credenciales de certificado para las aplicaciones del inquilino a solo los certificados emitidos por entidades de certificación de confianza. Esta directiva se aplica cuando se agrega un certificado a una aplicación y no afecta a los certificados existentes a menos que se giren. Cuando una aplicación intenta rotar sus credenciales de certificado, pasa por la evaluación de directivas para asegurarse de que las credenciales que se agregan cumplen con la restricción de entidad de certificación de confianza.

Paso 1: Crear una cadena de certificados de confianza

Permiso delegado con privilegios mínimos: AppCertTrustConfiguration.Read.All rol de Microsoft Entra con privilegios mínimos: Application Administrator

POST https://graph.microsoft.com/beta/certificateAuthorities/certificateBasedApplicationConfigurations

{
    "displayName": "Trusted Certificate Chain of Trust for Contoso",
    "description": "The Trusted Certificate Chain of Trust containing a certificate chain used by app policy, to only allow application certificates from selected issuer.",
    "trustedCertificateAuthorities": [
        {
            "isRootAuthority": true,
            "certificate": "MIIFVjCCAz6gAwIBAgIQJdrL...UyNDIyNTcwM1owPDE …="
        },
        {
            "isRootAuthority": false,
            "certificate": QAAAAAAWjABAQsFADA8M...UyNDIyNTcwM1o …="
        }
    ]
}

La solicitud devuelve un objeto de respuesta 200 OK. La respuesta incluye el identificador de la cadena de certificados del objeto de confianza. Suponga que el identificador es eec5ba11-2fc0-4113-83a2-ed986ed13743.

Paso 2: Asignación de la cadena de certificados de confianza a una directiva de administración de aplicaciones

En el ejemplo siguiente se configura una directiva para asegurarse de que solo se pueden agregar a las aplicaciones del inquilino los certificados emitidos por la entidad de certificación intermedia definida en el paso anterior. El objeto keyCredentials applicationRestrictions> define un restrictionType con el valor trustedCertificateAuthority, que hace referencia al identificador que se creó. Dado que esta directiva se aplica a la directiva de administración de aplicaciones de nivel de inquilino predeterminada, se aplica a todas las aplicaciones creadas en el inquilino y rechaza los intentos de agregar certificados no conformes como parte de las credenciales de certificado de una aplicación.

Esta directiva garantiza que solo se puedan agregar a las aplicaciones certificados de la entidad de certificación intermedia especificada. El objeto keyCredentials applicationRestrictions> establece un restrictionTypetrustedCertificateAuthorityen , haciendo referencia al identificador creado. Esta directiva se aplica a todas las aplicaciones del inquilino, rechazando los certificados no conformes.

Permiso delegado con privilegios mínimos: Policy.Read.ApplicationConfiguration rol de Microsoft Entra con privilegios mínimos: Security Administrator

PATCH https://graph.microsoft.com/v1.0/policies/defaultAppManagementPolicy

{
  "id": "d015220e-9789-4e8e-bbcc-270fe419229d",
  "description": "Lorem ipsum",
  "displayName": "Credential management policy",
  "isEnabled": true,
  "applicationRestrictions": {
    "passwordCredentials": [
      {
        "restrictionType": "passwordLifetime",
        "maxLifetime": "P14D",
        "restrictForAppsCreatedAfterDateTime": "2020-01-01T07:00:00Z"
      }
    ],
    "keyCredentials": [
      {
        "restrictionType": "certificateLifetime",
        "restrictForAppsCreatedAfterDateTime": "2020-01-01T10:37:00Z",
        "maxLifetime": "P90D"
      },
      {
        "restrictionType": "trustedCertificateAuthority",
        "certificateBasedApplicationConfigurationIds": [
          "eec5ba11-2fc0-4113-83a2-ed986ed13743"
        ],
        "restrictForAppsCreatedAfterDateTime": "2019-10-19T10:37:00Z"
      }
    ]
  }
}