Partager via


Étendre l’approvisionnement piloté par les API pour synchroniser les attributs personnalisés

Par défaut, les applications d’approvisionnement pilotées par les API prennent en charge les attributs de traitement qui font partie du schéma standard d’utilisateur principal et d’utilisateur d’entreprise SCIM. Votre système d’enregistrement peut avoir des attributs personnalisés que vous souhaiterez peut-être inclure dans le cadre de l’approvisionnement piloté par les API. Ce tutoriel avancé explique comment étendre votre application d’approvisionnement pilotée par l’API pour traiter des attributs personnalisés supplémentaires.

Notes

Avant d’essayer ce scénario avancé, nous vous recommandons de vérifier que la configuration de votre application d’approvisionnement prête à l’emploi fonctionne comme prévu à l’aide de l’un des clients d’API Graph Explorer, cURL ou Postman.

Exemple de scénario

Vous avez configuré l’application d’approvisionnement pilotée par l’API. L’approvisionnement de l’application utilise correctement les attributs qui font partie du schéma standard d’utilisateur principal SCIM et d’utilisateur d’entreprise et approvisionne les utilisateurs dans Microsoft Entra. Vous souhaitez maintenant envoyer deux attributs personnalisés HireDate et JobCode de votre système RH au point de terminaison d’API d’approvisionnement entrant. Vous souhaitez mapper ces deux attributs personnalisés aux attributs employeeHireDate et jobTitle de Microsoft Entra.

Étape 1 : étendre le schéma d’application d’approvisionnement

Dans cette étape, nous allons ajouter les deux attributs « HireDate » et « JobCode » qui ne font pas partie du schéma SCIM standard à l’application d’approvisionnement et les utiliser dans le flux de données d’approvisionnement.

  1. Connectez-vous au centre d'administration Microsoft Entra au minimum en tant qu’Administrateur d'application.
  2. Accédez à Identité>Applications>Applications d’entreprise.
  3. Ouvrez votre application de provisionnement basée sur l'API.
  4. Ouvrez le panneau Approvisionnement.
  5. Cliquez sur le bouton Modifier l’approvisionnement .
  6. Développez la section Mappages et cliquez sur le lien mappage d’attributs.
    Screenshot of edit attribute mapping.
  7. Faites défiler la page Mappages d’attributs vers le bas. Sélectionnez Afficher les options avancées, puis cliquez sur le lien Modifier la liste des attributs pour l’API . Screenshot of edit API attribute list.
  8. Faites défiler jusqu’à la fin de la page Modifier la liste d’attributs .
  9. Ajoutez les deux attributs suivants à la liste en tant qu’extensions de schéma SCIM. Vous pouvez utiliser votre propre espace de noms de schéma SCIM.
    urn:ietf:params:scim:schemas:extension:contoso:1.0:User:HireDate
    urn:ietf:params:scim:schemas:extension:contoso:1.0:User:JobCode
    Screenshot of adding custom attributes.
  10. Enregistrez vos modifications

Remarque

Si vous souhaitez ajouter seulement quelques attributs supplémentaires à l’application d’approvisionnement, utilisez le centre d’administration de Microsoft Entra pour étendre le schéma. Si vous souhaitez ajouter d’autres attributs personnalisés (supposons plus de 20 attributs), nous vous recommandons d’utiliser le UpdateSchema mode du script PowerShell CSV2SCIM qui automatise le processus manuel ci-dessus.

Étape 2 : mapper les attributs personnalisés

Nous allons maintenant ajouter ces extensions au mappage d’attributs d’application d’approvisionnement.

  1. Cliquez sur le lien Ajouter un nouveau mappage dans la page Mappage d’attributs . Screenshot of add new mapping.

  2. Mapper l’attribut urn:ietf:params:scim:schemas:extension:contoso:1.0:User:HireDate à employeeHireDate. Cliquez sur OK.
    Screenshot of hire date mapping.

  3. Ensuite, sélectionnez le mappage existant pour title et cliquez dessus pour modifier le mappage.

  4. Modifiez le mappage d’attributs à une expression qui inclura le urn:ietf:params:scim:schemas:extension:contoso:1.0:User:JobCode dans le cadre de l’attribut Microsoft Entra jobTitle.

      Join("", [title], "(", [urn:ietf:params:scim:schemas:extension:contoso:1.0:User:JobCode], ")")
    

    Screenshot of job title mapping.

    Avec ce mappage d’expressions, si title est « Tour Lead » et JobCode est « TL-1001 », l’attribut Microsoft Entra jobTitle AD est défini sur « Tour Lead (TL-1001) ».

  5. Enregistrez les mappages d’attributs.

Étape 3 : charger une requête en bloc avec des attributs personnalisés

  1. Ouvrez votre client API (Graph Explorer / Postman / cURL).
  2. Copiez-collez la demande en bloc avec des attributs personnalisés.
  3. Envoyez la demande en bloc à l’URL du point de terminaison de l’API d’approvisionnement.
    Screenshot of bulk upload request.
  4. Après un certain temps, vous pouvez vérifier les journaux d’approvisionnement pour vérifier le changement d’attribut.
    Screenshot of provisioning logs.
  5. Vous pouvez également vérifier la modification du profil utilisateur Microsoft Entra. La valeur de Employee hire date reflète le fuseau horaire de votre locataire.
    Screenshot of user profile.

Annexe

Demande en bloc avec des attributs personnalisés

La demande en bloc inclut les attributs personnalisés configurés dans les étapes ci-dessus.

Corps de la demande

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:BulkRequest"],
    "Operations": [
    {
        "method": "POST",
        "bulkId": "701984",
        "path": "/Users",
        "data": {
            "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User",
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
            "urn:ietf:params:scim:schemas:extension:contoso:1.0:User"],
            "externalId": "701984",
            "userName": "bjensen@example.com",
            "name": {
                "formatted": "Ms. Barbara J Jensen, III",
                "familyName": "Jensen",
                "givenName": "Barbara",
                "middleName": "Jane",
                "honorificPrefix": "Ms.",
                "honorificSuffix": "III"
            },
            "displayName": "Babs Jensen",
            "nickName": "Babs",
            "emails": [
            {
              "value": "bjensen@example.com",
              "type": "work",
              "primary": true
            }
            ],
            "addresses": [
            {
              "type": "work",
              "streetAddress": "234300 Universal City Plaza",
              "locality": "Hollywood",
              "region": "CA",
              "postalCode": "91608",
              "country": "USA",
              "formatted": "100 Universal City Plaza\nHollywood, CA 91608 USA",
              "primary": true
            }
            ],
            "phoneNumbers": [
            {
              "value": "555-555-5555",
              "type": "work"
            }
            ],
            "userType": "Employee",
            "title": "Tour Guide",
            "preferredLanguage": "en-US",
            "locale": "en-US",
            "timezone": "America/Los_Angeles",
            "active":true,
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
                "employeeNumber": "701984",
                "costCenter": "4130",
                "organization": "Universal Studios",
                "division": "Theme Park",
                "department": "Tour Operations",
                "manager": {
                  "value": "89607",
                  "displayName": "John Smith"
                 }
            },
            "urn:ietf:params:scim:schemas:extension:contoso:1.0:User": {
                "HireDate": "2021-05-01T00:00:00-05:00",
                "JobCode": "TG-1001"
            }            
        }
    },
    {
        "method": "POST",
        "bulkId": "701985",
        "path": "/Users",
        "data": {
            "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User",
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
            "urn:ietf:params:scim:schemas:extension:contoso:1.0:User"],
            "externalId": "701985",
            "userName": "Kjensen@example.com",
            "name": {
                "formatted": "Ms. Kathy J Jensen, III",
                "familyName": "Jensen",
                "givenName": "Kathy",
                "middleName": "Jane",
                "honorificPrefix": "Ms.",
                "honorificSuffix": "III"
            },
            "displayName": "Kathy Jensen",
            "nickName": "Kathy",
            "emails": [
            {
              "value": "kjensen@example.com",
              "type": "work",
              "primary": true
            }
            ],
            "addresses": [
            {
              "type": "work",
              "streetAddress": "100 Oracle City Plaza",
              "locality": "Hollywood",
              "region": "CA",
              "postalCode": "91618",
              "country": "USA",
              "formatted": "100 Oracle City Plaza\nHollywood, CA 91618 USA",
              "primary": true
            }
            ],
            "phoneNumbers": [
            {
              "value": "555-555-5545",
              "type": "work"
            }
            ],
            "userType": "Employee",
            "title": "Tour Lead",
            "preferredLanguage": "en-US",
            "locale": "en-US",
            "timezone": "America/Los_Angeles",
            "active":true,
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
              "employeeNumber": "701984",
              "costCenter": "4130",
              "organization": "Universal Studios",
              "division": "Theme Park",
              "department": "Tour Operations",
              "manager": {
                "value": "701984",
                "displayName": "Barbara Jensen"
             }
            },
            "urn:ietf:params:scim:schemas:extension:contoso:1.0:User": {
                "HireDate": "2022-07-15T00:00:00-05:00",
                "JobCode": "TL-1003"
            }            
        }
    }
],
    "failOnErrors": null
}

Étapes suivantes