Compartilhar via


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

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

O suporte do Microsoft Entra para o protocolo SCIM 2.0 é descrito em Usar o SCIM (System for Cross-Domain Identity Management) para provisionar automaticamente usuários e grupos da ID do Microsoft Entra para aplicativos, que lista as partes específicas do protocolo que ele implementa para provisionar automaticamente usuários e grupos da ID do Microsoft Entra para aplicativos que dão suporte ao 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. O jobID pode ser encontrado 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. Trabalhos mais antigos têm a ID customappsso. Esse trabalho representa o estado do serviço em 2018.

Se você estiver usando um aplicativo na galeria, o trabalho geralmente conterá 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

No item, qualquer item marcado como fixo 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. O comportamento customappSSO que era o padrão antes de dezembro de 2018 não tem mais suporte.

Observação

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 das alterações que fizemos, permitindo que você reverta para a jobID antiga ou usando um sinalizador. No entanto, como mencionado anteriormente, não recomendamos implementar o comportamento antigo, pois ele não tem mais suporte. É recomendável usar o novo comportamento das novas implementações e atualizar as implementações existentes.

Problema de conformidade do SCIM 2.0 Fixo? Data da correção Compatibilidade
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
Atributos de extensão usam notação de ponto . 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 booleano e remoções adequadas de associações do grupo) Não TBD usar sinalizador de recursos

Sinalizadores para alterar o comportamento de SCIM

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

Sinalizadores SCIM para comportamento posterior.

Usar a URL a seguir para atualizar o comportamento de PATCH e garantir a conformidade do SCIM. O sinalizador altera 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 recurso atualmente não funciona com provisionamento sob demanda.

Solicitações de exemplo para ajudar a descrever o que o mecanismo de sincronização envia no momento em comparação com as solicitações que são enviadas depois que o sinalizador de recurso está habilitado.

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

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

Atualizar o trabalho customappsso mais antigo para o trabalho SCIM

Exclua seu trabalho existente customappsso e crie 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 Entra ID>Enterprise.

  3. Localize e selecione seu aplicativo SCIM existente.

  4. Na seção Propriedades do aplicativo SCIM existente, copie a ID do 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

    Obter trabalhos

  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

  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. Retorne à primeira janela do navegador da Web e selecione a guia Provisionamento para seu aplicativo.
  2. Verifique a configuração e, em seguida, inicie o trabalho de provisionamento.

Permitimos que você faça downgrade de volta para o 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 ter suporte para sempre.

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

  2. Navegue até aplicativos Entra ID>Enterprise.

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

  4. Na seção Propriedades do novo aplicativo personalizado, copie a ID do 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. Retorne à primeira janela do navegador da Web e selecione a guia Provisionamento para seu aplicativo.

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

Próximas etapas

Saiba mais sobre provisionamento e desprovisionamento para aplicativos SaaS