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 para o protocolo SCIM 2.0 é descrito em Usando o Sistema para Gerenciamento de Identidades 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 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 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 (como ativo como booleano e remoções adequadas 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.
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.
- URL (compatível com SCIM): aadOptscim062020
- Referências SCIM RFC:
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.
Entre no centro de administração do Microsoft Entra como pelo menos um Administrador de Aplicativos.
Navegue até Aplicativos de identidade>>Aplicativos corporativos.
Localize e selecione o seu aplicativo SCIM existente.
Na seção Propriedades do seu aplicativo SCIM existente, copie a ID do objeto.
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.
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
Nos resultados, copie a string "ID" completa que começa com "customappsso" ou "scim".
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
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.
Execute o comando abaixo para excluir o trabalho de provisionamento:
DELETE https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[job-id]
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" }
- 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> }
- Retorne à primeira janela do navegador da Web e selecione a guia Provisionamento para seu aplicativo.
- Verifique sua configuração e inicie o trabalho de provisionamento.
Downgrade do trabalho SCIM para o trabalho customappsso (não recomendado)
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.
Entre no centro de administração do Microsoft Entra como pelo menos um Administrador de Aplicativos.
Navegue até Aplicativos de identidade>>Aplicativos corporativos.
Na seção Criar aplicativo, crie um novo aplicativo que não seja de galeria.
Na seção Propriedades do seu novo aplicativo personalizado, copie a ID do objeto.
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.
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" }
Retorne à primeira janela do navegador da Web e selecione a guia Provisionamento para seu aplicativo.
Conclua a configuração de provisionamento do usuário como faria normalmente.
Próximos passos
Saiba mais sobre provisionamento e desprovisionamento para aplicativos SaaS