Mapeando ao atributo certificateUserIds no Microsoft Entra ID
Os objetos de usuário do Microsoft Entra ID podem ter um atributo de vários valores chamado certificateUserIds.
- O atributo certificateUserIds tem vários valores, podendo conter até 10 valores.
- Cada valor não pode ter mais de 1024 caracteres.
- Cada valor deve ser único. Quando um valor está presente em uma conta de usuário, ele não pode ser gravado em outras contas de usuário no mesmo locatário do Microsoft Entra.
- O valor não precisa estar no formato de ID de e-mail. O atributo certificateUserIds pode armazenar UPNs (nomes principais de segurança) não roteáveis, como bob@woodgrove ou bob@local.
Observação
Embora cada valor deva ser exclusivo no Microsoft Entra ID, é possível mapear um único certificado para várias contas implementando várias associações de nome de usuário. Para obter mais informações, consulte Associações de vários nomes de usuário.
Padrões com suporte para IDs de usuário de certificado
Os valores armazenados em certificateUserIds deverão estar no formato descrito na tabela a seguir. Os prefixos X509:<Mapping> diferenciam maiúsculas de minúsculas.
Campo de mapeamento de certificado | Exemplos de valores em certificateUserIds |
---|---|
PrincipalName | X509:<PN>bob@woodgrove.com |
PrincipalName | X509:<PN>bob@woodgrove |
RFC822Name | X509:<RFC822>user@woodgrove.com |
IssuerAndSubject | X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<S>DC=com,DC=contoso,OU=UserAccounts,CN=mfatest |
Assunto | X509:<S>DC=com,DC=contoso,OU=UserAccounts,CN=mfatest |
SKI | X509:<SKI>aB1cD2eF3gH4iJ5kL6mN7oP8qR |
SHA1PublicKey | X509:<SHA1-PUKEY>cD2eF3gH4iJ5kL6mN7oP8qR9sT |
IssuerAndSerialNumber | X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<SR>eF3gH4iJ5kL6mN7oP8qR9sT0uV Para obter o valor correto para o número de série, execute este comando e armazene o valor mostrado em certificateUserIds: Sintaxe: Certutil –dump –v [~certificate path~] >> [~dumpFile path~] Exemplo: certutil -dump -v firstusercert.cer >> firstCertDump.txt |
Funções para atualizar certificateUserIds
Os usuários somente na nuvem devem ter pelo menos a função de Administrador de Autenticação Privilegiada para atualizar certificateUserIds. Os usuários somente na nuvem podem usar o centro de administração do Microsoft Entra ou o Microsoft Graph para atualizar os certificateUserIds.
Os usuários sincronizados devem ter pelo menos a função de Administrador de Identidade Híbrida para atualizar certificateUserIds. Somente o Microsoft Entra Connect pode ser usado para atualizar certificateUserIds sincronizando o valor do local.
Observação
Os administradores do Active Directory podem fazer alterações que afetam o valor de certificateUserIds no Microsoft Entra ID para qualquer conta sincronizada. Os administradores podem incluir contas com privilégios administrativos delegados sobre contas de usuário sincronizadas ou direitos administrativos sobre os servidores do Microsoft Entra Connect.
Atualizar certificateUserIds
Use as seguintes etapas para atualizar certificateUserIds para usuários:
Entre no centro de administração do Microsoft Entra pelo menos como um Administrador de Autenticação Privilegiada para usuários somente na nuvem ou pelo menos como um Administrador de Identidade Híbrida para usuários sincronizados.
Pesquise e selecione Todos os usuários.
Clique em um usuário e, em seguida, clique em Editar Propriedades.
Ao lado de Informações de autorização, clique em Exibir.
Clique em Editar IDs de usuário de certificado.
Clique em Adicionar.
Insira o valor e clique em Salvar. É possível adicionar até quatro valores, cada um com 120 caracteres.
Atualizar certificateUserIds usando consultas do Microsoft Graph
Os exemplos a seguir mostram como usar o Microsoft Graph para procurar certificateUserIds e atualizá-los.
Pesquisar certificateUserIds
Chamadores autorizados podem executar consultas do Microsoft Graph para encontrar todos os usuários com um determinado valor de certificadoUserId. No objeto de usuário do Microsoft Graph, a coleção de certificateUserIds é armazenada na propriedade authorizationInfo.
Para recuperar certificateUserIds de todos os objetos de usuário:
GET https://graph.microsoft.com/v1.0/users?$select=authorizationinfo
ConsistencyLevel: eventual
Para recuperar certificateUserIds para um determinado usuário pelo ObjectId do usuário:
GET https://graph.microsoft.com/v1.0/users/{user-object-id}?$select=authorizationinfo
ConsistencyLevel: eventual
Para recuperar o objeto de usuário com um valor específico em certificateUserIds:
GET https://graph.microsoft.com/v1.0/users?$select=authorizationinfo&$filter=authorizationInfo/certificateUserIds/any(x:x eq 'X509:<PN>user@contoso.com')&$count=true
ConsistencyLevel: eventual
Você também pode usar os operadores not
e startsWith
para corresponder à condição de filtro. Para filtrar o objeto certificateUserIds, a solicitação deve incluir a sequência de consulta $count=true
e o cabeçalho ConsistencyLevel deve ser definido como eventual
.
Atualizar certificateUserIds
Execute uma solicitação PATCH para atualizar o certificateUserIds para um determinado usuário.
Corpo da solicitação
PATCH https://graph.microsoft.com/v1.0/users/{user-object-id}
Content-Type: application/json
{
"authorizationInfo": {
"certificateUserIds": [
"X509:<PN>123456789098765@mil"
]
}
}
Atualizar certificateUserIds usando comandos do PowerShell
Para esta configuração, é possível usar o PowerShell do Microsoft Graph.
Inicie o PowerShell com privilégios de administrador.
Instale e importe o SDK do Microsoft Graph PowerShell.
Install-Module Microsoft.Graph -Scope AllUsers Import-Module Microsoft.Graph.Authentication Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Conecte-se ao locatário e aceite tudo.
Connect-MGGraph -Scopes "Directory.ReadWrite.All", "User.ReadWrite.All" -TenantId <tenantId>
Liste o atributo certificateUserIds de um determinado usuário.
$results = Invoke-MGGraphRequest -Method get -Uri 'https://graph.microsoft.com/v1.0/users/<userId>?$select=authorizationinfo' -OutputType PSObject -Headers @{'ConsistencyLevel' = 'eventual' } #list certificateUserIds $results.authorizationInfo
Crie uma variável com valores de certificateUserIds.
#Create a new variable to prepare the change. Ensure that you list any existing values you want to keep as this operation will overwrite the existing value $params = @{ authorizationInfo = @{ certificateUserIds = @( "X509:<SKI>gH4iJ5kL6mN7oP8qR9sT0uV1wX", "X509:<PN>user@contoso.com" ) } }
Atualize o atributo certificateUserIds.
$results = Invoke-MGGraphRequest -Method patch -Uri 'https://graph.microsoft.com/v1.0/users/<UserId>/?$select=authorizationinfo' -OutputType PSObject -Headers @{'ConsistencyLevel' = 'eventual' } -Body $params
Atualizar certificateUserIds usando um objeto de usuário
Obtenha o objeto de usuário.
$userObjectId = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" $user = Get-MgUser -UserId $userObjectId -Property AuthorizationInfo
Atualize o atributo certificateUserIds do objeto de usuário.
$user.AuthorizationInfo.certificateUserIds = @("X509:<SKI>iJ5kL6mN7oP8qR9sT0uV1wX2yZ", "X509:<PN>user1@contoso.com") Update-MgUser -UserId $userObjectId -AuthorizationInfo $user.AuthorizationInfo
Atualize os certificateUserIds usando o Microsoft Entra Connect
O Microsoft Entra Connect dá suporte à sincronização de valores para certificateUserIds de um ambiente do Active Directory local. O Active Directory local oferece suporte à autenticação baseada em certificado e a várias associações de nome de usuário. Use a última versão do Microsoft Entra Connect.
Para usar esses métodos de mapeamento, é necessário preencher o atributo altSecurityIdentities dos objetos de usuário no Active Directory local. Além disso, após aplicar alterações de autenticação baseada em certificado em controladores de domínio do Windows, conforme descrito em KB5014754, você pode ter implementado alguns dos métodos de mapeamento não reutilizáveis (Type=strong) para atender aos requisitos de imposição de associação de certificado forte do Active Directory local.
Para evitar erros de sincronização, verifique se os valores que estão sendo sincronizados seguem um dos formatos com suporte para o certificateUserIds.
Antes de começar, verifique se todas as contas de usuário sincronizadas do Active Directory local têm:
5 valores ou menos em seus atributos altSecurityIdentities
Nenhum valor com mais de 1024 caracteres
Nenhum valor duplicado
Considere cuidadosamente se um valor duplicado se destina a mapear um único certificado para várias contas locais do Active Directory. Para obter mais informações, consulte Associações de vários nomes de usuário.
Observação
Em cenários específicos, um subconjunto de usuários pode ter uma justificativa comercial válida para mapear um único certificado para mais de uma conta do Active Directory local. Analise esses cenários e, quando necessário, implemente os métodos de mapeamento separados para mapear mais de uma conta no Active Directory local e no Microsoft Entra ID.
Considerações para sincronização contínua de certificateUserIds
- Certifique-se de que o processo de provisionamento para preencher os valores no Active Directory local implemente as medidas de higiene adequadas. Somente os valores associados aos certificados válidos atuais são preenchidos.
- Os valores são removidos quando o certificado correspondente expira ou é revogado.
- Valores maiores que 1024 caracteres não são preenchidos.
- Valores duplicados não são provisionados.
- Use o Microsoft Entra Connect Health para monitorar a sincronização.
Siga estas etapas para configurar o Microsoft Entra Connect para sincronizar userPrincipalName com certificateUserIds:
No servidor do Microsoft Entra Connect, encontre e inicie o Editor de Regras de Sincronização.
Clique em Direção e, em seguida, clique em Saída.
Localize a regra Para o Microsoft Entra ID – Identidade de Usuário, clique em Editar e em Sim para confirmar.
Insira um número alto no campo Procedência e, em seguida, clique em Avançar.
Clique em Transformações>Adicionar transformação. Talvez seja necessário rolar a lista de transformações para baixo antes de criar uma nova.
Sincronizar X509:<PN>PrincipalNameValue
Para sincronizar o X509:<PN>PrincipalNameValue, crie uma regra de sincronização de saída e escolha Expressão no tipo de fluxo. Escolha o atributo de destino como certificateUserIds, e no campo de origem, adicione a seguinte expressão. Se o atributo de origem não for userPrincipalName, você poderá alterar a expressão adequadamente.
"X509:<PN>"&[userPrincipalName]
Sincronizar X509:<RFC822>RFC822Name
Para sincronizar o X509:<RFC822>RFC822Name, crie uma regra de sincronização de saída e escolha Expressão no tipo de fluxo. Escolha o atributo de destino como certificateUserIds, e no campo de origem, adicione a seguinte expressão. Se o atributo de origem não for userPrincipalName, você poderá alterar a expressão adequadamente.
"X509:<RFC822>"&[userPrincipalName]
Clique em Atributo de Destino, selecione certificateUserIds, clique emOrigem, selecione userPrincipalName e, em seguida, clique em Salvar.
Clique em OK para confirmar.
Importante
Os exemplos anteriores usam o atributo userPrincipalName como um atributo de origem na regra de transformação. Você pode usar qualquer atributo disponível com o valor apropriado. Por exemplo, algumas organizações usam o atributo mail. Para regras de transformação mais complexas, consulte Sincronização do Microsoft Entra Connect: Entendendo Expressões de Provisionamento Declarativas
Para obter mais informações sobre as expressões de provisionamento declarativas, confira Microsoft Entra Connect: expressões de provisionamento declarativas.
Sincronizar o atributo altSecurityIdentities do Active Directory com o certificateUserIds do Microsoft Entra
O atributo altSecurityIdentities não faz parte do conjunto de atributos padrão. Um administrador precisa adicionar um novo atributo ao objeto de pessoa no Metaverso e depois criar as regras de sincronização apropriadas para retransmitir esses dados para certificateUserIds no Microsoft Entra ID.
Abra o Metaverse Designer e selecione o objeto pessoa. Para criar o atributo alternativeSecurityId, clique em Novo atributo. Selecione Sequência (não indexável) para criar um tamanho de atributo de até 1024 caracteres, que é o comprimento máximo com suporte para certificateUserIds. Se você selecionar String (indexável), o tamanho máximo de um valor de atributo será de 448 caracteres. Certifique-se de selecionar Multivalor.
Abra o Designer de Metaverso e selecione AlternativeSecurityId para adicioná-lo ao objeto de pessoa.
Crie uma regra de sincronização de entrada para transformar de altSecurityIdentities para o atributo alternativeSecurityId.
Na regra de entrada, use as seguintes opções.
Opção Valor Nome Nome descritivo da regra, como por exemplo: Entrada do Active Directory - altSecurityIdentities Sistema Conectado Seu domínio do Active Directory local Tipo de Objeto do Sistema Conectado usuário Tipo de Objeto de Metaverso pessoa Precedência Escolha um número abaixo de 100 que não seja usado no momento Em seguida, clique em Transformações e crie um mapeamento direto para o atributo de destino alternativeSecurityId do atributo de origem altSecurityIdentities, conforme mostrado na captura de tela a seguir.
Crie uma regra de sincronização de saída para transformar o atributo alternativeSecurityId para o atributo certificateUserIds no Microsoft Entra ID.
Opção Valor Nome Nome descritivo da regra, como: Para o Microsoft Entra ID – certificateUserIds Sistema Conectado Seu domínio do Microsoft Entra Tipo de Objeto do Sistema Conectado usuário Tipo de Objeto de Metaverso pessoa Precedência Escolha um número alto não usado atualmente acima de todas as regras padrão, como 150 Em seguida, clique em Transformações e crie um mapeamento direto para o atributo de destino certificateUserIds do atributo de origem alternativeSecurityId, conforme mostrado na captura de tela a seguir.
Execute a sincronização para preencher dados para o atributo certificateUserIds.
Para verificar o êxito, exiba as informações de autorização de um usuário no Microsoft Entra ID.
Para mapear um subconjunto de valores do atributo altSecurityIdentities, substitua a Transformação na etapa 4 por uma Expressão. Para usar uma Expressão, vá para a guia Transformações e altere sua opção FlowType para Expressão, o atributo de destino para certificateUserIds e insira a expressão no campo Origem. O exemplo a seguir filtra apenas valores alinhados aos campos de mapeamento de Certificado SKI e SHA1PublicKey:
Código de expressão:
IIF(IsPresent([alternativeSecurityId]),
Where($item,[alternativeSecurityId],BitOr(InStr($item, "X509:<SKI>"),InStr($item, "X509:<SHA1-PUKEY>"))>0),[alternativeSecurityId]
)
Os administradores podem filtrar valores de altSecurityIdentities que se alinham com os padrões com suporte. Verifique se a configuração do CBA foi atualizada para dar suporte às associações de nome de usuário que estão sendo sincronizadas com certificateUserIds para habilitar a autenticação usando esses valores.
Próximas etapas
- Visão geral da CBA do Microsoft Entra
- Aprofundamento técnico para CBA do Microsoft Entra
- Como configurar a CBA do Microsoft Entra
- CBA do Microsoft Entra em dispositivos iOS
- CBA do Microsoft Entra em dispositivos Android
- Logon de cartão inteligente do Windows usando a CBA do Microsoft Entra
- Como migrar usuários federados
- perguntas frequentes