Problemas conhecidos e as resoluções em conformidade com o protocolo SCIM 2.0 do serviço de provisionamento de usuário do Microsoft Entra

O Microsoft Entra ID pode provisionar automaticamente usuários e grupos para qualquer aplicativo ou sistema que seja administrado por um serviço Web com a interface definida no especificação do protocolo do Sistema para SCIM (Gerenciamento de Identidade Entre Domínios) 2.0.

Suporte do Azure AD para o protocolo SCIM 2.0 é descrito em Usando o Sistema para Gerenciamento de Identidade Entre Domínios (SCIM) para provisionar automaticamente usuários e grupos do Microsoft Azure Active Directory para aplicativos, que lista o partes específicas do protocolo que implementa a fim de provisionar automaticamente usuários e grupos do Microsoft Entra ID para aplicativos que dão suporte a SCIM 2.0.

Este artigo descreve os problemas atuais e anteriores com a aderência ao serviço de provisionamento do usuário do Microsoft Entra ao protocolo SCIM 2.0 e como trabalhar nesses problemas.

Noções básicas sobre o trabalho de provisionamento

O serviço de provisionamento usa o conceito de um trabalho para operar em um aplicativo. A jobID pode ser encontrada na barra de progresso. Todos os novos aplicativos de provisionamento são criados com uma jobID começando com “SCIM”. O trabalho SCIM representa o estado atual do serviço. Os trabalhos mais antigos têm a ID “customappsso”. Esse trabalho representa o estado do serviço em 2018.

Se estiver usando um aplicativo na galeria, o trabalho geralmente contém o nome do aplicativo (como zoom snowFlake ou dataBricks). Você pode ignorar esta documentação ao usar um aplicativo da galeria. Isso se aplica principalmente a aplicativos fora da galeria com a jobID SCIM ou customAppSSO.

Problemas de conformidade de SCIM 2.0 e o status

Na tabela a seguir, qualquer item marcado como corrigido significa que o comportamento adequado pode ser encontrado no trabalho SCIM. Trabalhamos para garantir a compatibilidade com versões anteriores das alterações que fizemos. É recomendável usar o novo comportamento das novas implementações e atualizar as implementações existentes. Observe que não há mais suporte para o comportamento customappSSO, que era o padrão antes de dezembro de 2018.

Observação

Em relação às alterações feitas em 2018, você pode reverter para o comportamento customappsso. Para as alterações feitas desde 2018, você pode usar as URLs para reverter para o comportamento mais antigo. Trabalhamos para garantir a compatibilidade com versões anteriores das alterações que fizemos, permitindo que você reverta para a jobID antiga ou usando um sinalizador. No entanto, como já mencionado, não recomendamos a implementação de um comportamento antigo, pois não há mais suporte para ele. É recomendável usar o novo comportamento das novas implementações e atualizar as implementações existentes.

Problemas de conformidade SCIM 2.0 Corrigido? Corrigir a data Compatibilidade com versões anteriores
O Microsoft Entra ID requer "/scim" para estar na raiz da URL do ponto de extremidade do SCIM do aplicativo Sim 18 de dezembro de 2018 faça downgrade para customappSSO
Os atributos de extensão usam ponto de notação "." antes de nomes de atributo, em vez de notação de dois pontos “:” Sim 18 de dezembro de 2018 faça downgrade para customappSSO
As solicitações de patch para atributos com vários valores contêm a sintaxe de filtro de caminho inválido Sim 18 de dezembro de 2018 faça downgrade para customappSSO
As solicitações de criação de grupo contêm um URI de esquema inválido Sim 18 de dezembro de 2018 faça downgrade para customappSSO
Atualizar o comportamento do PATCH para garantir a conformidade (por exemplo, ativo como booliano e remoções apropriadas de associação de grupo) Não TBD usar sinalizador de recursos

Sinalizadores para alterar o comportamento de SCIM

Use os sinalizadores abaixo na URL do locatário do aplicativo para alterar o comportamento padrão do cliente do SCIM.

SCIM flags to later behavior.

Usar a URL a seguir para atualizar o comportamento de PATCH e garantir a conformidade do SCIM. O sinalizador alterará os seguintes comportamentos:

  • Solicitações feitas para desabilitar usuários
  • Solicitações para adicionar um atributo de cadeia de caracteres de valor único
  • Solicitações para substituir vários atributos
  • Solicitações para remover um membro do grupo

Esse comportamento está disponível apenas no momento de usar o sinalizador, mas se tornará o comportamento padrão nos próximos meses. Observe que esse sinalizador de recursos atualmente não funciona com o provisionamento sob demanda.

Abaixo estão as solicitações de amostra que ajudam a delinear o que o mecanismo de sincronização envia atualmente em comparação com as solicitações enviadas depois que o sinalizador de recurso está habilitado.

Solicitações feitas para desabilitar os usuários:

Sem o sinalizador de recurso

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

Com o sinalizador de recurso

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

Solicitações feitas para adicionar um atributo de cadeia de caracteres de valor único:

Sem o sinalizador de recurso

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

Com o sinalizador de recurso

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

Solicitações para substituir vários atributos:

Sem o sinalizador de recurso

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

Com o sinalizador de recurso

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

Solicitações feitas para remover um membro do grupo:

Sem o sinalizador de recurso

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

Com o sinalizador de recurso

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "remove",
          "path": "members[value eq \"7f4bc1a3-285e-48ae-8202-5accb43efb0e\"]"
      }
  ]
}
  • URL de downgrade: depois que o novo comportamento SCIM se tornar o padrão no aplicativo fora da galeria, você poderá usar a seguinte URL para reverter para o comportamento antigo não conforme com SCIM: AzureAdScimPatch2017

Atualizar o trabalho customappsso mais antigo para o trabalho SCIM

Seguir as etapas abaixo excluirá seu trabalho customappsso existente e criará um novo trabalho SCIM.

  1. Entre no centro de administração do Microsoft Entra como, no mínimo, um Administrador de aAplicativos.

  2. Navegue até Identidade>Aplicativos>Aplicativos empresariais.

  3. Localize e selecione seu aplicativo SCIM existente.

  4. Na seção Propriedades do seu aplicativo existente do SCIM, copie a ID de objeto.

  5. Em uma nova janela do navegador da Web, acesse https://developer.microsoft.com/graph/graph-explorer e entre como o administrador do locatário do Microsoft Entra o qual o aplicativo foi adicionado.

  6. No Explorador do Graph, execute o comando a seguir para localizar a ID do seu trabalho de provisionamento. Substitua "[object-id]" pelo serviço de ID da entidade (ID de objeto) copiado da terceira etapa.

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

    Get Jobs

  7. Nos resultados, copie a cadeia de caracteres completa de "ID" que começa com "customappsso" ou "scim".

  8. Execute o comando a seguir para recuperar a configuração de mapeamento de atributo, para que você possa fazer um backup. Use o mesmo [object-id] como antes e substitua [job-id] pela ID de trabalho de provisionamento copiada da última etapa.

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

    Get Schema

  9. Copie a saída JSON da última etapa e salve-a em um arquivo de texto. O JSON contém qualquer mapeamento de atributo personalizado que você adicionou ao aplicativo antigo e deve ser de aproximadamente alguns milhares de linhas de JSON.

  10. Execute o comando a seguir para excluir o trabalho de provisionamento:

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

  11. Execute o comando a seguir para criar um novo trabalho de provisionamento que tenha as correções mais recentes do serviço.

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

  1. Nos resultados da última etapa, copie a cadeia de caracteres completa de "ID" que começa com "scim". Opcionalmente, reaplique os mapeamentos de atributos antigos, executando o comando abaixo, substituindo [new-job-id] pela nova ID de trabalho que você copiou e inserindo a saída JSON da etapa 7 como o corpo da solicitação.

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

  1. Volte para a primeira janela do navegador da web e selecione a guia Provisionamento para o seu aplicativo.
  2. Verifique a configuração e, em seguida, inicie o trabalho de provisionamento.

Permitimos que você faça o downgrade de volta para o comportamento antigo, mas não recomendamos isso, pois algumas atualizações que fazemos não trazem benefício para o customappsso, e talvez não haja suporte para sempre.

  1. Entre no centro de administração do Microsoft Entra como, no mínimo, um Administrador de aAplicativos.

  2. Navegue até Identidade>Aplicativos>Aplicativos empresariais.

  3. Na seção Criar aplicativo, crie um novo aplicativo Não galeria.

  4. Na seção propriedades do seu novo aplicativo personalizado, copie a ID de objeto.

  5. Em uma nova janela do navegador da Web, acesse https://developer.microsoft.com/graph/graph-explorer e entre como o administrador do locatário do Microsoft Entra o qual o aplicativo foi adicionado.

  6. No Graph Explorer, execute o comando a seguir para inicializar a configuração de provisionamento para seu aplicativo. Substitua "[object-id]" pelo serviço de ID da entidade (ID de objeto) copiado da terceira etapa.

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

  7. Volte para a primeira janela do navegador da web e selecione a guia Provisionamento para o seu aplicativo.

  8. Conclua o configuração de provisionamento de usuário conforme faria normalmente.

Próximas etapas

Saiba mais sobre o provisionamento e desprovisionamento para aplicativos SaaS