Estendere il provisioning in ingresso basato su API per sincronizzare gli attributi personalizzati

Per impostazione predefinita, le app di provisioning basate su API supportano attributi di elaborazione che fanno parte dello schema utente aziendale e utente di base SCIM standard. Il sistema di registrazione può avere attributi personalizzati che vogliono includere nell'ambito del provisioning basato su API. Questa esercitazione avanzata descrive come estendere l'app di provisioning basato su API per elaborare altri attributi personalizzati.

Nota

Prima di provare questo scenario avanzato, è consigliabile verificare che la configurazione predefinita dell'app di provisioning funzioni come previsto usando uno dei client API seguenti Graph Explorer, cURL.

Scenario di esempio

È stata configurata l'app di provisioning basato su API. L'app di provisioning usa correttamente gli attributi che fanno parte dello schema utente aziendale e utente di base SCIM standard ed effettua il provisioning degli utenti in Microsoft Entra ID. Si vogliono ora inviare due attributi personalizzati HireDate e JobCode dal sistema HR all'endpoint API di provisioning in ingresso. Si vuole eseguire il mapping di questi due attributi personalizzati agli attributi employeeHireDate e jobTitle di Microsoft Entra.

Passaggio 1 - Estendere lo schema dell'app di provisioning

In questo passaggio i due attributi "HireDate" e "JobCode", che non fanno parte dello schema SCIM standard, verranno aggiunti all'app di provisioning e usati nel flusso di dati di provisioning.

  1. Accedere all'Interfaccia di amministrazione di Microsoft Entra almeno come amministratore applicazione.
  2. Passare a Identità>Applicazioni>Applicazioni aziendali.
  3. Aprire l'app di provisioning basato su API.
  4. Aprire il riquadro Provisioning.
  5. Fare clic sul pulsante Modifica il provisioning.
  6. Espandere la sezione Mapping e fare clic sul collegamento del mapping degli attributi.
    Screenshot della modifica del mapping degli attributi.
  7. Scorrere verso il basso nella pagina Mapping degli attributi. Selezionare Mostra opzioni avanzate e fare clic sul collegamento Modifica elenco attributi per API. Screenshot della modifica dell'elenco degli attributi per l'API.
  8. Scorrere verso il basso fino alla fine della pagina Modifica elenco attributi.
  9. Aggiungere all'elenco i due attributi seguenti come estensioni dello schema SCIM. È possibile usare il proprio spazio dei nomi dello schema SCIM.
    urn:ietf:params:scim:schemas:extension:contoso:1.0:User:HireDate
    urn:ietf:params:scim:schemas:extension:contoso:1.0:User:JobCode
    Screenshot dell'aggiunta di attributi personalizzati.
  10. Salvare le modifiche.

Nota

Se si vogliono aggiungere solo alcuni attributi aggiuntivi all'app di provisioning, usare l'Interfaccia di amministrazione di Microsoft Entra per estendere lo schema. Se si vogliono aggiungere altri attributi personalizzati, ad esempio più di 20 attributi, è consigliabile usare la modalità UpdateSchema dello script CSV2SCIM di PowerShell che automatizza il processo manuale descritto in precedenza.

Passaggio 2- Eseguire il mapping degli attributi personalizzati

Aggiungere ora queste estensioni al mapping degli attributi dell'app di provisioning.

  1. Fare clic sul collegamento Aggiungi nuovo mapping nella pagina Mapping di attributi. Screenshot di Aggiungi nuovo mapping.

  2. Eseguire il mapping dell'attributo urn:ietf:params:scim:schemas:extension:contoso:1.0:User:HireDate a employeeHireDate. Fare clic su OK.
    Screenshot del mapping di HireDate.

  3. Selezionare quindi il mapping esistente per title e fare clic su di esso per modificare il mapping.

  4. Modificare il mapping dell'attributo a un'espressione che includerà urn:ietf:params:scim:schemas:extension:contoso:1.0:User:JobCode come parte dell'attributo jobTitle di Microsoft Entra.

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

    Screenshot del mapping di JobTitle.

    Con questo mapping di espressione, se il valore di title è "Tour Lead" e il valore di JobCode è "TL-1001", l'attributo jobTitle di Microsoft Entra sarà impostato su "Tour Lead (TL-1001)".

  5. Salvare i mapping degli attributi.

Passaggio 3 - Caricare una richiesta in blocco con attributi personalizzati

  1. Aprire il client API (Graph Explorer/cURL).
  2. Copiare e incollare la richiesta in blocco con attributi personalizzati.
  3. Inviare la richiesta in blocco all'URL dell'endpoint API di provisioning.
    Screenshot della richiesta di caricamento in blocco.
  4. Dopo qualche tempo, è possibile controllare i log di provisioning per verificare la modifica degli attributi.
    Screenshot dei log di provisioning.
  5. È anche possibile verificare la modifica nel profilo utente di Microsoft Entra. Il valore di Employee hire date è espresso nel fuso orario del tenant.
    Screenshot del profilo utente.

Appendice

Richiesta in blocco con attributi personalizzati

La richiesta in blocco include gli attributi personalizzati configurati nei passaggi precedenti.

Testo della richiesta

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

Passaggi successivi