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

O Microsoft Entra ID pode provisionar automaticamente usuários e grupos para qualquer aplicativo ou sistema que seja liderado por um serviço Web com a interface definida na especificação do protocolo System for Cross-Domain Identity Management (SCIM) 2.0.

O suporte do Microsoft Entra ID 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 Entra ID para aplicativos, que lista as partes específicas do protocolo que ele implementa para provisionar automaticamente usuários e grupos do Microsoft Entra ID para aplicativos que suportam SCIM 2.0.

Este artigo descreve problemas atuais e passados com a adesão do serviço de provisionamento de usuário do Microsoft Entra ao protocolo SCIM 2.0 e como contornar esses problemas.

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

O serviço de provisionamento usa o conceito de trabalho para operar em relação a um aplicativo. O jobID pode ser encontrado na barra de progresso. Todos os novos aplicativos de provisionamento são criados com um jobID começando com "scim". O trabalho scim representa o estado atual do serviço. Os trabalhos mais antigos têm o ID "customappsso". Este trabalho representa o estado do serviço em 2018.

Se você 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 de galeria. Isso se aplica principalmente a aplicativos que não são de galeria com jobID, SCIM ou customAppSSO.

Problemas e status de conformidade com SCIM 2.0

Na tabela abaixo, qualquer item marcado como fixo significa que o comportamento adequado pode ser encontrado no trabalho SCIM. Trabalhámos para garantir a compatibilidade com versões anteriores das alterações que fizemos. Recomendamos usar o novo comportamento para quaisquer novas implementações e atualizar as implementações existentes. Observe que o comportamento customappSSO que era o padrão antes de dezembro de 2018 não é mais suportado.

Nota

Para as alterações feitas em 2018, é possível 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 para as alterações que fizemos, permitindo que você reverta para o antigo jobID ou usando um sinalizador. No entanto, como mencionado anteriormente, não recomendamos a implementação de comportamentos antigos, pois ele não é mais suportado. Recomendamos usar o novo comportamento para quaisquer novas implementações e atualizar as implementações existentes.

Problema de conformidade com SCIM 2.0 Corrigido? Data de correção Compatibilidade com versões anteriores
O Microsoft Entra ID requer que "/scim" esteja na raiz da URL do ponto de extremidade SCIM do aplicativo Sim Dezembro 18, 2018 downgrade para customappSSO
Os atributos de extensão usam notação de ponto "." antes de nomes de atributos em vez de dois pontos de notação ":" Sim Dezembro 18, 2018 downgrade para customappSSO
As solicitações de patch para atributos de vários valores contêm sintaxe de filtro de caminho inválida Sim Dezembro 18, 2018 downgrade para customappSSO
As solicitações de criação de grupo contêm um URI de esquema inválido Sim Dezembro 18, 2018 downgrade para customappSSO
Atualize o comportamento do PATCH para garantir a conformidade (por exemplo, ativo como booleano e remoção adequada de membros do grupo) Não TBD usar sinalizador de recurso

Sinalizadores para alterar o comportamento SCIM

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

SCIM flags to later behavior.

Use a seguinte URL para atualizar o comportamento do PATCH e garantir a conformidade com 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
  • Pedidos para remover um membro do grupo

Atualmente, esse comportamento só está disponível ao usar o sinalizador, mas se tornará o comportamento padrão nos próximos meses. Observe que esse sinalizador de recurso atualmente não funciona com provisionamento sob demanda.

Abaixo estão exemplos de solicitações para ajudar a descrever o que o mecanismo de sincronização envia atualmente versus as solicitações que são enviadas quando o sinalizador de recurso é habilitado.

Pedidos feitos para desativar utilizadores:

Sem sinalizador de recurso

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

Com 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 sinalizador de recurso

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

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

Pedidos feitos para remover um membro do grupo:

Sem sinalizador de recurso

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

Com 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 compatível com SCIM se tornar o padrão no aplicativo não de galeria, você poderá usar a seguinte URL para reverter para o comportamento antigo não compatível com SCIM: AzureAdScimPatch2017

Atualizando do 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 pelo menos um Administrador de Aplicativos.

  2. Navegue até Aplicativos de identidade>>Aplicativos corporativos.

  3. Localize e selecione a sua aplicação SCIM existente.

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

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

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

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

    Get Jobs

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

  8. Execute o comando abaixo para recuperar a configuração de mapeamento de atributos, para que você possa fazer um backup. Use o mesmo [object-id] como antes e substitua [job-id] pelo ID do trabalho de provisionamento copiado 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 todos os mapeamentos de atributos personalizados que você adicionou ao seu aplicativo antigo e deve ser aproximadamente alguns milhares de linhas de JSON.

  10. Execute o comando abaixo para excluir o trabalho de provisionamento:

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

  11. Execute o comando abaixo para criar um novo trabalho de provisionamento com as correções de serviço mais recentes.

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

  1. Nos resultados da última etapa, copie a string "ID" completa que começa com "scim". Opcionalmente, reaplique seus mapeamentos de atributos antigos executando o comando abaixo, substituindo [new-job-id] pelo novo ID de trabalho copiado 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. Retorne à primeira janela do navegador da Web e selecione a guia Provisionamento para seu aplicativo.
  2. Verifique sua configuração e inicie o trabalho de provisionamento.

Permitimos que você faça o downgrade de volta ao comportamento antigo, mas não o recomendamos, pois o customappsso não se beneficia de algumas das atualizações que fazemos e pode não ser suportado para sempre.

  1. Entre no centro de administração do Microsoft Entra como pelo menos um Administrador de Aplicativos.

  2. Navegue até Aplicativos de identidade>>Aplicativos corporativos.

  3. Na seção Criar aplicativo, crie um novo aplicativo que não seja de galeria.

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

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

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

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

  7. Retorne à primeira janela do navegador da Web e selecione a guia Provisionamento para seu aplicativo.

  8. Conclua a configuração de provisionamento do usuário como faria normalmente.

Próximos passos

Saiba mais sobre provisionamento e desprovisionamento para aplicativos SaaS