Partager via


Gérer les applications Microsoft Entra à l’aide de Microsoft Graph

Microsoft Entra applications permettent un accès sécurisé aux ressources dans le cloud Microsoft. Microsoft Graph fournit un point de terminaison d’API unifié qui vous permet de créer, configurer et gérer par programmation ces applications et leurs principaux de service associés. Cet article explique comment automatiser les tâches courantes de gestion des applications avec Microsoft Graph, notamment l’inscription d’applications, la mise à jour des propriétés, l’attribution d’autorisations et la gestion des informations d’identification.

Configuration requise

  • Pour tester les opérations de l’API, connectez-vous à Graph Explorer avec un compte qui vous permet de créer et de gérer des applications dans votre locataire.

Inscrire une application auprès de Microsoft Entra ID

Créez une application en spécifiant la propriété displayName requise. La requête utilise des valeurs par défaut pour d’autres propriétés.

Autorisation déléguée avec privilèges minimum : Application.ReadWrite.All.

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

{
  "displayName": "My application"
}

La requête retourne une 201 Created réponse avec l’objet d’application dans le corps de la réponse. L’application obtient un ID unique pour les applications dans le locataire, et un appId globalement unique dans l’écosystème Microsoft Entra ID.

Créer un principal de service pour une application

Autorisation déléguée avec privilèges minimum : Application.ReadWrite.All.

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

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

La requête retourne une 201 Created réponse qui inclut l’objet principal de service dans le corps de la réponse.

Traitement d’une application ou d’un objet principal de service

Référencez une application ou un principal de service par son ID. Cette syntaxe prend en charge les méthodes HTTP GET, PATCH et DELETE.

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

Référencez une application ou un principal de service par son appId. Cette syntaxe prend en charge les méthodes HTTP GET, PATCH et DELETE.

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

Adressez un objet d’application par son uniqueName à l’aide de la méthode PATCH. Utilisez cette propriété pour créer une application avec le nom unique si elle n’existe pas, ou la mettre à jour si elle existe. Cette opération est appelée Upsert.

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

{
  "displayName": "Display name"
}

Configurer d’autres propriétés de base pour votre application

Autorisation déléguée avec privilèges minimum : Application.ReadWrite.All.

Configurez ces propriétés de base pour votre application :

  • Ajouter des étiquettes pour la catégorisation (utilisez HideApp pour masquer l’application de Mes applications et le lanceur Microsoft 365)
  • Ajouter un logo, des conditions d’utilisation et une déclaration de confidentialité
  • Stocker les informations de contact
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.contoso.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;"
}

Limitez la connexion aux utilisateurs auxquels tous les rôles sont attribués sur l’application.

Autorisation déléguée avec privilèges minimum : Application.ReadWrite.All.

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

{
    "appRoleAssignmentRequired": true
}

Attribuer des autorisations à une application

Attribuez des autorisations via Microsoft Graph en mettant à jour la propriété requiredResourceAccess de l’objet d’application. Cette méthode est une alternative programmatique à l’utilisation de la centre d’administration Microsoft Entra. Incluez à la fois les autorisations existantes et nouvelles pour éviter de supprimer les autorisations qui sont attribuées mais qui ne sont pas accordées.

L’attribution d’autorisations ne les accorde pas. Accordez le consentement administrateur dans le centre d’administration Microsoft Entra ou par programmation à l’aide des API Microsoft Graph.

Autorisation déléguée avec privilèges minimum : 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"
        }
      ]
    }
  ]
}

Créer des rôles d’application

Créer des rôles d’application sur un objet d’application

Pour ajouter ou mettre à jour des rôles d’application, incluez tous les rôles existants dans votre demande. Si vous omettez des rôles existants, ils sont supprimés.

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

Gérer les propriétaires

Identifier les principaux de service sans propriétaire ou ceux qui n’ont qu’un seul propriétaire

Autorisation déléguée avec privilèges minimum : Application.ReadWrite.All.

Cette demande nécessite que l’en-tête ConsistencyLevel soit défini sur eventual, car $count figure dans la demande. Pour plus d’informations sur l’utilisation de ConsistencyLevel et $count, consultez Fonctionnalités de requête avancées sur les objets d’annuaire.

Cette requête retourne également le nombre d’applications qui correspondent à la condition de filtre.

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

Affecter un propriétaire à une application

Autorisation déléguée avec privilèges minimum : Application.ReadWrite.All.

Dans la requête suivante, 8afc02cb-4d62-4dba-b536-9f6d73e9be26 est l’ID d’objet d’un utilisateur ou d’un principal de service.

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

Affecter un propriétaire à un principal de service

Autorisation déléguée avec privilèges minimum : Application.ReadWrite.All.

La requête suivante fait référence au principal de service à l’aide de son appId. Vous pouvez également le référencer à l’aide de l’ID d’objet dans le modèle ../servicePrincipals/{object ID}/owners/$ref. dddddddd-9999-0000-1111-eeeeeeeeeeee est l’ID d’objet d’un utilisateur ou d’un principal de service.

POST https://graph.microsoft.com/v1.0/servicePrincipals(appId='00001111-aaaa-2222-bbbb-3333cccc4444')/owners/$ref
Content-Type: application/json

{
    "@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/dddddddd-9999-0000-1111-eeeeeeeeeeee"
}

Verrouiller les propriétés sensibles pour les principaux de service

Utilisez la fonctionnalité de verrouillage instance d’application pour protéger les propriétés sensibles des principaux de service contre les modifications non autorisées. Yo peut verrouiller les propriétés suivantes :

  • keyCredentials où le type d’utilisation est Sign ou Verify.
  • passwordCredentials où le type d’utilisation est Sign ou Verify.
  • propriété tokenEncryptionKeyId .

Vous gérez l’application instance fonctionnalité de verrouillage via la propriété servicePrincipalLockConfiguration de l’objet application de l’application multilocataire.

Pour verrouiller toutes les propriétés sensibles d’un principal de service

Quand isEnabled et allProperties a la valeur true, même si d’autres propriétés de l’objet servicePrincipalLockConfiguration sont null, toutes les propriétés sensibles du principal de service sont verrouillées.

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

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

Pour verrouiller des propriétés sensibles spécifiques d’un principal de service

L’exemple suivant verrouille les propriétés keyCredentials et passwordCredentials du principal de service et active l’application instance fonctionnalité de verrouillage.

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

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

Configurer des autorités de certification approuvées pour les applications

Vous pouvez limiter l’utilisation des informations d’identification de certificat pour les applications de votre locataire aux certificats émis par les autorités de certification approuvées. Cette stratégie est appliquée lorsque vous ajoutez un certificat à une application et n’affecte pas les certificats existants, sauf s’ils sont pivotés. Lorsqu’une application tente de faire pivoter ses informations d’identification de certificat, elle passe par l’évaluation de la stratégie pour s’assurer que les informations d’identification ajoutées sont conformes à la restriction de l’autorité de certification approuvée.

Étape 1 : Créer une chaîne de certificats d’approbation

Autorisation déléguée avec privilèges minimum : AppCertTrustConfiguration.Read.All rôle de Microsoft Entra moins privilégié :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 requête retourne un objet de réponse 200 OK . La réponse inclut l’ID de la chaîne de certificats de l’objet d’approbation. Supposons que l’ID soit eec5ba11-2fc0-4113-83a2-ed986ed13743 utilisé à l’étape 2.

Étape 2 : Affecter la chaîne de certificats d’approbation à une stratégie de gestion des applications

L’exemple suivant configure une stratégie pour s’assurer que seuls les certificats émis par l’autorité de certification intermédiaire définie à l’étape précédente peuvent être ajoutés aux applications dans le locataire. L’objet applicationRestrictions>keyCredentials définit un restrictionType avec la valeur trustedCertificateAuthority, qui fait référence à l’ID créé. Étant donné que cette stratégie est appliquée à la stratégie de gestion des applications par défaut au niveau du locataire, elle est appliquée à toutes les applications créées dans le locataire et rejette les tentatives d’ajout de certificats non conformes dans le cadre des informations d’identification de certificat d’une application.

Cette stratégie garantit que seuls les certificats de l’autorité de certification intermédiaire spécifiée peuvent être ajoutés aux applications. L’objet applicationRestrictions>keyCredentials définit un restrictionType sur trustedCertificateAuthority, référençant l’ID créé. Cette stratégie s’applique à toutes les applications du locataire, rejetant tout certificat non conforme.

Autorisation déléguée avec privilèges minimum : Policy.Read.ApplicationConfiguration rôle de Microsoft Entra moins privilégié :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"
      }
    ]
  }
}