Problèmes connus et résolutions liés à la conformité du protocole SCIM 2.0 du service d’approvisionnement des utilisateurs Microsoft Entra

Microsoft Entra ID peut automatiquement attribuer des utilisateurs et des groupes à toute application ou système doté d'un service Web avec l'interface définie dans la spécification du protocole System for Cross-Domain Identity Management (SCIM) 2.0.

La prise en charge de Microsoft Entra ID pour le protocole SCIM 2.0 est décrite dans Utilisation de System for Cross-Domain Identity Management (SCIM) pour approvisionner automatiquement les utilisateurs et les groupes de Microsoft Entra ID dans des applications, qui répertorie les parties spécifiques du protocole qu’il implémente afin d’approvisionner automatiquement les utilisateurs et les groupes de Microsoft Entra ID dans les applications prenant en charge SCIM 2.0.

Cet article décrit les problèmes actuels et passés liés à l’adhésion du service de provisionnement des utilisateurs Microsoft Entra au protocole SCIM 2.0 et comment contourner ces problèmes.

Compréhension des étapes d’approvisionnement

Le service d’approvisionnement utilise le concept de travail pour opérer sur une application. Le jobID se trouve dans la barre de progression. Toutes les nouvelles applications d’approvisionnement sont créées avec un jobID commençant par « scim ». Le travail scim représente l’état actuel du service. Les travaux plus anciens ont l’ID « customappsso ». Ce travail représente l’état du service en 2018.

Si vous utilisez une application de la galerie, le travail contient généralement le nom de l’application (comme zoom snowFrake ou dataBricks). Vous pouvez ignorer cette documentation lors de l’utilisation d’une application de la galerie. Cela s’applique principalement aux applications qui ne sont pas de la galerie avec jobID SCIM ou customAppSSO.

Problèmes de conformité et état SCIM 2.0

Dans le tableau ci-dessous, tout élément marqué comme corrigé signifie que le comportement correct peut être trouvé sur le travail SCIM. Nous avons travaillé pour garantir la compatibilité descendante des modifications que nous avons apportées. Nous vous recommandons d’utiliser le nouveau comportement pour les nouvelles implémentations et la mise à jour des implémentations existantes. Notez que le comportement customappSSO, qui était la valeur par défaut avant décembre 2018, n’est plus pris en charge.

Notes

Pour les modifications apportées en 2018, il est possible de revenir au comportement customappsso. Pour les modifications apportées depuis 2018, vous pouvez utiliser les URL pour revenir à l’ancien comportement. Nous avons travaillé pour garantir la compatibilité descendante des modifications que nous avons apportées en vous permettant de revenir à l’ancien jobID ou en utilisant un indicateur. Toutefois, comme mentionné précédemment, nous vous déconseillons d’implémenter l’ancien comportement, car il n’est plus pris en charge. Nous vous recommandons d’utiliser le nouveau comportement pour les nouvelles implémentations et la mise à jour des implémentations existantes.

Problèmes de conformité à SCIM 2.0 Résolution ? Date du correctif Compatibilité descendante
L'ID Microsoft Entra nécessite que "/scim" se trouve à la racine de l'URL du point de terminaison SCIM de l'application Oui 18 décembre 2018 Passage à la version antérieure customappSSO
Les attributs d’extension utilisent la notation point « . » avant les noms d’attribut, et non pas la notation deux-points « : » Oui 18 décembre 2018 Passage à la version antérieure customappSSO
Les demandes de correctif pour les attributs multivaleurs contiennent une syntaxe de filtre de chemin d’accès non valide Oui 18 décembre 2018 passage à la version antérieure customappSSO
Les demandes de création de groupe contiennent une URI de schéma non valide Oui 18 décembre 2018 passage à la version antérieure customappSSO
Mise à jour du comportement des PATCH pour garantir la conformité (par exemple, actif en tant que valeur booléenne et suppressions appropriées d’appartenance à un groupe) Non TBD utiliser des indicateurs de fonctionnalité

Indicateurs permettant de modifier le comportement de SCIM

Utilisez les indicateurs ci-dessous dans l’URL du locataire de votre application afin de modifier le comportement de client SCIM par défaut.

SCIM flags to later behavior.

Utilisez l’URL suivante pour mettre à jour le comportement des PATCH et garantir la conformité SCIM. L’indicateur modifie les comportements suivants :

  • Demandes effectuées pour désactiver des utilisateurs
  • Demandes effectuées pour ajouter un attribut de chaîne à valeur unique
  • Demandes effectuées pour remplacer plusieurs attributs
  • Demandes effectuées pour supprimer un membre du groupe

Ce comportement est actuellement disponible uniquement lorsque vous utilisez l’indicateur, mais il deviendra le comportement par défaut au cours des prochains mois. Notez que cet indicateur de fonctionnalité ne fonctionne actuellement pas avec l’approvisionnement à la demande.

Vous trouverez ci-dessous des exemples de requêtes pour vous aider à décrire ce que le moteur de synchronisation envoie par rapport aux requêtes envoyées une fois l’indicateur de fonctionnalité activé.

Demandes effectuées pour désactiver des utilisateurs :

Sans indicateur de fonctionnalité

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "Replace",
          "path": "active",
          "value": "False"
      }
  ]
}

Avec indicateur de fonctionnalité

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "replace",
          "path": "active",
          "value": false
      }
  ]
}

Requêtes effectuées pour ajouter un attribut de chaîne à valeur unique :

Sans indicateur de fonctionnalité

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
    {
      "op": "Add",
      "path": "nickName",
      "value": "Babs"
    }
  ]
}

Avec indicateur de fonctionnalité

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
  "Operations": [
    {
      "op": "add",
      "path": "nickName",
      "value": "Babs"
    }
  ]
}

Requêtes effectuées pour remplacer plusieurs attributs :

Sans indicateur de fonctionnalité

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "Replace",
          "path": "displayName",
          "value": "Pvlo"
      },
      {
          "op": "Replace",
          "path": "emails[type eq \"work\"].value",
          "value": "TestBcwqnm@test.microsoft.com"
      },
      {
          "op": "Replace",
          "path": "name.givenName",
          "value": "Gtfd"
      },
      {
          "op": "Replace",
          "path": "name.familyName",
          "value": "Pkqf"
      },
      {
          "op": "Replace",
          "path": "externalId",
          "value": "Eqpj"
      },
      {
          "op": "Replace",
          "path": "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber",
          "value": "Eqpj"
      }
  ]
}

Avec indicateur de fonctionnalité

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "replace",
          "path": "emails[type eq \"work\"].value",
          "value": "TestMhvaes@test.microsoft.com"
      },
      {
          "op": "replace",
          "value": {
              "displayName": "Bjfe",
              "name.givenName": "Kkom",
              "name.familyName": "Unua",
              "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber": "Aklq"
          }
      }
  ]
}

Requêtes effectuées pour supprimer un membre du groupe :

Sans indicateur de fonctionnalité

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "Remove",
          "path": "members",
          "value": [
              {
                  "value": "u1091"
              }
          ]
      }
  ]
}

Avec indicateur de fonctionnalité

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "remove",
          "path": "members[value eq \"7f4bc1a3-285e-48ae-8202-5accb43efb0e\"]"
      }
  ]
}
  • URL de rétrogradation : Une fois que le nouveau comportement conforme à SCIM devient celui par défaut sur l’application ne figurant pas dans la galerie, vous pouvez utiliser l’URL suivante pour revenir à l’ancien comportement conforme non SCIM : AzureAdScimPatch2017

Mise à niveau de l’ancien travail customappsso en travail SCIM

Suivre les étapes ci-dessous supprime votre travail customappsso existant et créer un nouveau travail SCIM.

  1. Connectez-vous au centre d’administration Microsoft Entra en tant qu’administrateur d’applications au moins.

  2. Accédez à Identité>Applications>Applications d’entreprise.

  3. Localisez et sélectionnez votre application SCIM existante.

  4. Dans la section Propriétés de votre application SCIM existante, copiez l’ID objet.

  5. Dans une nouvelle fenêtre de navigateur Web, accédez à https://developer.microsoft.com/graph/graph-explorer et connectez-vous en tant qu'administrateur du locataire Microsoft Entra où votre application est ajoutée.

  6. Dans l’Explorateur graphique, exécutez la commande suivante pour rechercher l’ID de votre travail d’approvisionnement. Remplacez « [object-id] » par l’ID du principal de service (ID d’objet) copié à partir de la troisième étape.

    GET https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs

    Get Jobs

  7. Dans les résultats, copiez la chaîne « ID » complète qui commence par « customappsso » ou « scim ».

  8. Exécutez la commande ci-dessous pour récupérer la configuration du mappage des attributs, afin de pouvoir effectuer une sauvegarde. Utilisez le même [object-id] qu’auparavant et remplacez [job-id] par l’ID du travail approvisionnement copié à partir de la dernière étape.

    GET https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[job-id]/schema

    Get Schema

  9. Copiez la sortie JSON de la dernière étape et enregistrez-la dans un fichier texte. Le code JSON contient les mappages d’attributs personnalisés que vous avez ajoutés à votre ancienne application et doit contenir quelques milliers de lignes.

  10. Exécutez la commande ci-dessous pour supprimer le travail d’approvisionnement :

    DELETE https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[job-id]

  11. Exécutez la commande ci-dessous pour créer un nouveau travail d’approvisionnement avec les derniers correctifs de service.

POST https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs { "templateId": "scim" }

  1. Dans les résultats de la dernière étape, copiez la chaîne « ID » complète qui commence par « scim ». Si vous le souhaitez, réappliquez vos anciens mappages d’attributs en exécutant la commande ci-dessous, en remplaçant [new-job-id] par le nouvel ID de travail que vous avez copié, et en entrant la sortie JSON de l’étape n° 7 en tant que corps de la demande.

PUT https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[new-job-id]/schema { <your-schema-json-here> }

  1. Revenez à la première fenêtre du navigateur Web et sélectionnez l’onglet Approvisionnement de votre application.
  2. Vérifiez votre configuration, puis démarrez la tâche d’approvisionnement.

Nous vous autorisons à revenir à l’ancien comportement mais ne le recommandons pas, car le travail customappsso ne bénéficie pas de certaines mises à jour que nous faisons, et risque ne pas être pris en charge indéfiniment.

  1. Connectez-vous au centre d’administration Microsoft Entra en tant qu’administrateur d’applications au moins.

  2. Accédez à Identité>Applications>Applications d’entreprise.

  3. Dans la section Créer une application, créez une nouvelle application hors galerie.

  4. Dans la section Propriétés de votre nouvelle application personnalisée, copiez l’ID objet.

  5. Dans une nouvelle fenêtre de navigateur Web, accédez à https://developer.microsoft.com/graph/graph-explorer et connectez-vous en tant qu'administrateur du locataire Microsoft Entra où votre application est ajoutée.

  6. Dans l’Explorateur graphique, exécutez la commande suivante pour initialiser la configuration d’approvisionnement de votre application. Remplacez « [object-id] » par l’ID du principal de service (ID d’objet) copié à partir de la troisième étape.

    POST https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs { templateId: "customappsso" }

  7. Revenez à la première fenêtre du navigateur Web et sélectionnez l’onglet Approvisionnement de votre application.

  8. Complétez la configuration d’approvisionnement utilisateur comme vous le feriez normalement.

Étapes suivantes

En savoir plus sur l’approvisionnement et l’annulation de l’approvisionnement pour les applications SaaS