Partager via


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 approvisionner automatiquement des utilisateurs et des groupes sur n’importe quelle application ou système devant 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 pour le protocole SCIM 2.0 est décrite dans Using System for Cross-Domain Identity Management (SCIM) pour approvisionner automatiquement des utilisateurs et des groupes de Microsoft Entra ID vers des applications, qui répertorie les parties spécifiques du protocole qu’il implémente afin de provisionner automatiquement les utilisateurs et les groupes de Microsoft Entra ID aux applications qui prennent 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. L’ID de travail se trouve dans la barre de progression. Toutes les nouvelles applications d’approvisionnement sont créées avec un jobID à partir de 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 dans la galerie, le travail contient généralement le nom de l’application (par exemple, zoom snowFlake 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 fichier, tout élément marqué comme fixe signifie que le comportement approprié se trouve 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. Le comportement customappSSO qui était la valeur par défaut antérieure à 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 un 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ème de conformité SCIM 2.0 Fixe? Date de correction Rétrocompatibilité
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 par points . avant les noms d’attributs au lieu de 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 À déterminer utiliser des indicateurs de fonctionnalité

Indicateurs permettant de modifier le comportement de SCIM

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

Indicateurs SCIM vers un comportement ultérieur.

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.

Exemples de requêtes pour vous aider à décrire ce que le moteur de synchronisation envoie actuellement par rapport aux demandes envoyées une fois l’indicateur de fonctionnalité activé.

Demandes effectuées pour désactiver les utilisateurs :

Sans indicateur de fonctionnalité

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

Avec l’indicateur de fonctionnalité

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

Demandes 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 l’indicateur de fonctionnalité

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

Demandes de remplacement de 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 l’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"
          }
      }
  ]
}

Demandes effectuées pour supprimer un membre de groupe :

Sans indicateur de fonctionnalité

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

Avec l’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 la valeur par défaut sur l’application non 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

Supprimez votre travail existant customappsso et créez un travail SCIM.

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

  2. Accédez aux applications Entra ID>Enterprise.

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

  4. Dans la section Propriétés de votre application SCIM existante, copiez l’ID d’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

    Obtenir des travaux

  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

  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, puis sélectionnez l’onglet Approvisionnement de votre application.
  2. Vérifiez votre configuration, puis démarrez la tâche d’approvisionnement.

Nous vous permettent de revenir à l’ancien comportement, mais ne vous recommandons pas de le rétrograder, car customappsso ne bénéficie pas de certaines des mises à jour que nous effectuons, et peut ne pas être pris en charge pour toujours.

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

  2. Accédez aux applications Entra ID>Enterprise.

  3. Dans la section Créer une application, créez une application non-galerie .

  4. Dans la section Propriétés de votre nouvelle application personnalisée, copiez l’ID d’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, puis 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 le déprovisionnement pour les applications SaaS