Problemi noti e risolti con la conformità al protocollo SCIM 2.0 del servizio di provisioning utenti di Microsoft Entra

Microsoft Entra ID può effettuare automaticamente il provisioning di utenti e gruppi in qualsiasi applicazione o sistema gestito da un servizio Web con interfaccia definita nella specifica del protocollo System for Cross-Domain Identity Management (SCIM) 2.0.

Il supporto del protocollo SCIM 2.0 da parte di Microsoft Entra è descritto in Uso di System for Cross-Domain Identity Management (SCIM) per abilitare il provisioning automatico di utenti e gruppi da Microsoft Entra ad applicazioni, in cui sono indicate le parti specifiche del protocollo che vengono implementate per effettuare automaticamente il provisioning di utenti e gruppi da Microsoft Entra alle applicazioni che supportano SCIM 2.0.

In questo articolo sono descritti i problemi correnti e passati relativi alla conformità del servizio di provisioning utenti di Microsoft Entra con il protocollo SCIM 2.0 e sono fornite indicazioni su come risolverli.

Informazioni sul processo di provisioning

Il servizio di provisioning usa il concetto di processo per operare su un'applicazione. L'ID processo è disponibile nell'indicatore di stato. Tutte le nuove applicazioni di provisioning vengono create con un JOBID a partire da "scim". Il processo scim rappresenta lo stato corrente del servizio. I processi meno recenti hanno l'ID "customappsso". Questo processo rappresenta lo stato del servizio nel 2018.

Se si usa un'applicazione nella raccolta, il processo contiene in genere il nome dell'app, ad esempio zoom snowFlake o dataBricks. È possibile ignorare questa documentazione quando si usa un'applicazione della raccolta. Questo vale principalmente per le applicazioni non della raccolta con JOBID SCIM o customAppSSO.

Problemi di conformità con SCIM 2.0 e stato

Nella tabella seguente, qualsiasi elemento contrassegnato come fisso indica che il comportamento corretto è disponibile nel processo SCIM. Abbiamo lavorato per garantire la compatibilità con le versioni precedenti per le modifiche apportate. È consigliabile usare il nuovo comportamento per le nuove implementazioni e aggiornare le implementazioni esistenti. Si noti che il comportamento customappSSO predefinito precedente a dicembre 2018 non è più supportato.

Nota

Per le modifiche apportate nel 2018, è possibile ripristinare il comportamento customappsso. Per le modifiche apportate dal 2018, è possibile usare gli URL per ripristinare il comportamento precedente. Abbiamo lavorato per garantire la compatibilità con le versioni precedenti per le modifiche apportate, consentendo di ripristinare il valore jobID precedente o usando un flag. Tuttavia, come accennato in precedenza, non è consigliabile implementare il comportamento precedente perché non è più supportato. È consigliabile usare il nuovo comportamento per le nuove implementazioni e aggiornare le implementazioni esistenti.

Problema di conformità con SCIM 2.0 Risolto? Data di risoluzione Compatibilità con le versioni precedenti
In Microsoft Entra ID, "/ scim" deve trovarsi nella radice dell’URL endpoint SCIM dell’applicazione 18 dicembre 2018 downgrade a customappSSO
Per gli attributi di estensione, si utilizza la notazione punto "." prima dei nomi di attributo anziché i due punti ":" 18 dicembre 2018 downgrade a customappSSO
Le richieste di patch per gli attributi multivalore contengono una sintassi del filtro del percorso non valida 18 dicembre 2018 downgrade a customappSSO
Le richieste di creazione dei gruppi contengono un URI di schema non valido 18 dicembre 2018 downgrade a customappSSO
Aggiornare il comportamento patch per garantire la conformità, ad esempio le rimozioni di appartenenza a gruppi attive come booleane e appropriate. No Da definire Usare i flag di funzionalità

Flag per modificare il comportamento SCIM

Usare i flag seguenti nell'URL tenant dell'applicazione per modificare il comportamento predefinito del client SCIM.

Flag SCIM al comportamento successivo.

Usare l'URL seguente per aggiornare il comportamento patch e garantire la conformità SCIM. Il flag modificherà i comportamenti seguenti:

  • Richieste effettuate per disabilitare gli utenti
  • Richiede di aggiungere un attributo stringa a valore singolo
  • Richieste di sostituzione di più attributi
  • Richieste di rimozione di un membro del gruppo

Questo comportamento è attualmente disponibile solo quando si usa il flag, ma diventerà il comportamento predefinito nei prossimi mesi. Si noti che questo flag di funzionalità attualmente non funziona con il provisioning su richiesta.

Di seguito sono riportate le richieste di esempio per illustrare gli invii del motore di sincronizzazione rispetto alle richieste inviate dopo l'abilitazione del flag di funzionalità.

Richieste effettuate per disabilitare gli utenti:

Senza flag di funzionalità

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

Con flag di funzionalità

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

Richieste effettuate per aggiungere un attributo stringa a valore singolo:

Senza flag di funzionalità

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

Con flag di funzionalità

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

Richieste di sostituzione di più attributi:

Senza flag di funzionalità

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

Con flag di funzionalità

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

Richieste effettuate per rimuovere un membro del gruppo:

Senza flag di funzionalità

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

Con flag di funzionalità

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "remove",
          "path": "members[value eq \"7f4bc1a3-285e-48ae-8202-5accb43efb0e\"]"
      }
  ]
}
  • URL downgrade: quando il nuovo comportamento conforme a SCIM diventa l'impostazione predefinita nell'applicazione non della raccolta, è possibile usare l'URL seguente per eseguire il rollback al comportamento precedente e non conforme a SCIM: AzureAdScimPatch2017

Aggiornamento dal processo customappsso precedente al processo SCIM

Seguendo questa procedura si eliminerà il processo customappsso esistente e si creerà un nuovo processo SCIM.

  1. Accedere all'Interfaccia di amministrazione di Microsoft Entra almeno come amministratore applicazione.

  2. Passare a Identità>Applicazioni>Applicazioni aziendali.

  3. Individuare e selezionare l'applicazione SCIM esistente.

  4. Nella sezione Proprietà della propria app SCIM, copiare l’ID oggetto.

  5. In una nuova finestra del Web browser, accedere a https://developer.microsoft.com/graph/graph-explorer e accedere come amministratore del tenant di Microsoft Entra in cui deve essere aggiunta l'app.

  6. In Graph explorer, eseguire il comando seguente per individuare l'ID del processo di provisioning. Sostituire "[id-oggetto]" con l’ID principale del servizio (ID oggetto) copiato nel terzo passaggio.

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

    Ottenere i processi

  7. Nei risultati, copiare la stringa "ID" completa che inizia con "customappsso" o "scim".

  8. Eseguire il comando seguente per recuperare la configurazione di mapping degli attributi per eseguirne un backup. Usare lo stesso [id-oggetto] di prima e sostituire [id-processo] con l'ID del processo di provisioning copiato nell'ultimo passaggio.

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

  9. Copiare l'output JSON dall'ultimo passaggio e salvarlo in un file di testo. Questo file JSON contiene tutti i mapping degli attributi personalizzati aggiunti all’app precedente e include alcune migliaia di righe di JSON.

  10. Eseguire il comando seguente per eliminare il processo di provisioning:

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

  11. Eseguire il comando seguente per creare un nuovo processo di provisioning con le correzioni più recenti di servizio.

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

  1. Nei risultati dell’ultimo passaggio, copiare la stringa "ID" completa che inizia con "scim". Facoltativamente, è possibile applicare di nuovo i mapping degli attributi precedenti eseguendo il comando seguente, sostituendo [nuovo-id-processo] con il nuovo ID di processo appena copiato e immettendo il codice JSON di output salvato nel passaggio 7 come corpo della richiesta.

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

  1. Tornare alla prima finestra del browser Web e selezionare la scheda Provisioning dell'applicazione.
  2. Verificare la configurazione, quindi avviare il processo di provisioning.

È possibile eseguire il downgrade al comportamento precedente, ma non è consigliabile perché customappsso non trae vantaggio da alcuni degli aggiornamenti apportati e potrebbe non essere supportato per sempre.

  1. Accedere all'Interfaccia di amministrazione di Microsoft Entra almeno come amministratore applicazione.

  2. Passare a Identità>Applicazioni>Applicazioni aziendali.

  3. Nella sezione Crea applicazione creare una nuova applicazione non nella raccolta.

  4. Nella sezione Proprietà della nuova app personalizzata, copiare l’ID oggetto.

  5. In una nuova finestra del Web browser, accedere a https://developer.microsoft.com/graph/graph-explorer e accedere come amministratore del tenant di Microsoft Entra in cui deve essere aggiunta l'app.

  6. In Graph explorer, eseguire il comando seguente per inizializzare la configurazione del provisioning dell'app. Sostituire "[id-oggetto]" con l’ID principale del servizio (ID oggetto) copiato nel terzo passaggio.

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

  7. Tornare alla prima finestra del browser Web e selezionare la scheda Provisioning dell'applicazione.

  8. Completare la configurazione del provisioning utenti con la normale procedura.

Passaggi successivi

Informazioni sul provisioning e il deprovisioning utenti in applicazioni SaaS