Share via


Problemi noti e soluzioni con la conformità del 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 anteriore da un servizio Web con l'interfaccia definita nella specifica del protocollo SCIM (System for Cross-Domain Identity Management) 2.0.

Il supporto di MICROSOFT Entra ID per il protocollo SCIM 2.0 è descritto in Uso di System for Cross-Domain Identity Management (SCIM) per effettuare automaticamente il provisioning di utenti e gruppi da Microsoft Entra ID alle applicazioni, che elenca le parti specifiche del protocollo implementate per effettuare automaticamente il provisioning di utenti e gruppi da Microsoft Entra ID alle applicazioni che supportano SCIM 2.0.

Questo articolo descrive i problemi correnti e passati relativi alla conformità del servizio di provisioning utenti di Microsoft Entra al protocollo SCIM 2.0 e come risolvere questi problemi.

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à
Microsoft Entra ID richiede che "/scim" sia nella radice dell'URL dell'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, come rimozione booleana e corretta dell'appartenenza al gruppo) No Da definire usare il 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.

SCIM flags to later behavior.

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 il 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 il 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 il 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 il 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 di 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 come almeno un'applicazione Amministrazione istrator.

  2. Passare a Applicazioni di identità>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 passare a https://developer.microsoft.com/graph/graph-explorer e accedere come amministratore per il tenant di Microsoft Entra in cui viene 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

    Get Jobs

  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

    Get Schema

  9. Copiare l'output JSON dall'ultimo passaggio e salvarlo in un file di testo. Il codice JSON contiene tutti i mapping di attributi personalizzati aggiunti all'app precedente e dovrebbe essere circa poche 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, riapplicare i mapping degli attributi precedenti eseguendo il comando seguente, sostituendo [new-job-id] con il nuovo ID processo copiato e immettendo l'output JSON del 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 come almeno un'applicazione Amministrazione istrator.

  2. Passare a Applicazioni di identità>Applicazioni>aziendali.

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

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

  5. In una nuova finestra del Web browser passare a https://developer.microsoft.com/graph/graph-explorer e accedere come amministratore per il tenant di Microsoft Entra in cui viene 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