Identificadores de usuario de certificado

Los usuarios de id. de Microsoft Entra pueden tener un atributo multivalor denominado certificateUserIds. El atributo permite hasta cinco valores, y cada valor puede tener una longitud de 1024 caracteres. Puede almacenar cualquier valor y no requiere el formato de identificador de correo electrónico. Puede almacenar nombres principales de usuario (UPN) no enrutables, como bob@woodgrove o bob@local.

Patrones admitidos para identificadores de usuario de certificado

Los valores almacenados en certificateUserIds deben tener el formato descrito en la tabla siguiente. Los prefijos de <asignación> X509: distinguen mayúsculas de minúsculas.

Campo de asignación de certificados Ejemplos de valores en 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
Asunto X509:<S>DC=com,DC=contoso,OU=UserAccounts,CN=mfatest
SKI X509:<SKI>123456789abcdef
SHA1PublicKey X509:<SHA1-PUKEY>123456789abcdef
IssuerAndSerialNumber X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<SR>b24134139f069b49997212a86ba0ef48
Para obtener el valor correcto para el número de serie, ejecute este comando y almacene el valor que se muestra en CertificateUserIds:
Sintaxis:
Certutil –dump –v [~certificate path~] >> [~dumpFile path~]
Ejemplo:
certutil -dump -v firstusercert.cer >> firstCertDump.txt

Roles para actualizar certificateUserIds

En el caso de los usuarios que solo están en la nube, únicamente los usuarios con los roles de Administrador global y Administrador de autenticación con privilegios pueden escribir en certificateUserIds. Los usuarios solo en la nube pueden usar la experiencia de usuario y MSGraph para escribir en certificateUserIds. Para los usuarios sincronizados, los usuarios de AD con el rol Administrador de identidades híbridas pueden escribir en el atributo. Solo se puede usar Microsoft Entra Connect para actualizar CertificateUserIds mediante la sincronización del valor del entorno local para los usuarios sincronizados.

Nota:

Los administradores de Active Directory, como las cuentas con privilegios administrativos delegados en las cuentas de usuario sincronizadas, así como derechos administrativos en servidores de Microsoft Entra Connect, pueden realizar cambios que afecten al valor de certificateUserIds en Microsoft Entra ID para las cuentas sincronizadas.

Actualizar certificateUserIds

Los administradores de inquilinos pueden seguir estos pasos para actualizar los identificadores de usuario de certificado de una cuenta de usuario:

  1. Inicie sesión en el Centro de administración de Microsoft Entra al menos como Administrador de usuario. Busque y seleccione Todos los usuarios.

    Screenshot of test user account.

  2. Haga clic en un usuario y seleccione Editar propiedades.

  3. Junto a Authorization info (Información de autorización), haga clic en Ver.

    Screenshot of View authorization info.

  4. Haga clic en Edit certificate user IDs (Editar identificadores de usuario de certificado).

    Screenshot of Edit certificate user IDs.

  5. Haga clic en Agregar.

    Screenshot of how to add a CertificateUserID.

  6. Escriba el valor y haga clic en Guardar. Puede agregar hasta cuatro valores, cada uno de 120 caracteres.

    Screenshot of a value to enter for CertificateUserId.

Actualizar certificateUserIds mediante consultas de Microsoft Graph

Buscar certificateUserIds

Los autores de llamadas autorizados pueden ejecutar consultas de Microsoft Graph para buscar todos los usuarios con un valor certificateUserId determinado. En el objeto de usuario de Microsoft Graph, la colección de certificateUserIds está almacenada en la propiedad authorizationInfo.

Para recuperar certificateUserIds de todos los objetos de usuario:

GET https://graph.microsoft.com/v1.0/users?$select=authorizationinfo
ConsistencyLevel: eventual

Para recuperar certificateUserIds para un usuario determinado por ObjectId del usuario:

GET https://graph.microsoft.com/v1.0/users/{user-object-id}?$select=authorizationinfo
ConsistencyLevel: eventual

Para recuperar todos los objetos de usuario que tengan un valor determinado en 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

También puede usar los operadores not y startsWith para que coincidan con la condición de filtro. Para filtrar por el objeto certificateUserIds, la solicitud debe incluir la cadena de consulta $count=true y el encabezado ConsistencyLevel establecido en eventual.

Actualizar certificateUserIds

Ejecutar una solicitud PATCH para actualizar certificateUserIds para un usuario determinado.

Cuerpo de la solicitud:

PATCH https://graph.microsoft.com/v1.0/users/{user-object-id}
Content-Type: application/json
{
    "authorizationInfo": {
        "certificateUserIds": [
            "X509:<PN>123456789098765@mil"
        ]
    }
}

Actualización de certificateUserIds mediante comandos de PowerShell

Para la configuración, puede usar Microsoft Graph PowerShell:

  1. Inicie PowerShell con privilegios de administrador.

  2. Instale e importe el SDK de PowerShell para Microsoft Graph.

        Install-Module Microsoft.Graph -Scope AllUsers
        Import-Module Microsoft.Graph.Authentication
        Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    
  3. Conéctese al inquilino y acepte todo.

       Connect-MGGraph -Scopes "Directory.ReadWrite.All", "User.ReadWrite.All" -TenantId <tenantId>
    
  4. Enumere el atributo CertificateUserIds de un usuario determinado.

      $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
    
  5. Cree una variable con 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>eec6b88788d2770a01e01775ce71f1125cd6ad0f", 
                  "X509:<PN>user@contoso.com"
                  )
            }
      }
    
  6. Actualice el 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
    

Actualización de CertificateUserIds mediante un objeto de usuario

  1. Obtenga el objeto de usuario.

      $userObjectId = "6b2d3bd3-b078-4f46-ac53-f862f35e10b6"
      $user = Get-MgUser -UserId $userObjectId -Property AuthorizationInfo
    
  2. Actualice el atributo CertificateUserIds del objeto de usuario.

       $user.AuthorizationInfo.certificateUserIds = @("X509:<SKI>eec6b88788d2770a01e01775ce71f1125cd6ad0f", "X509:<PN>user1@contoso.com") 
       Update-MgUser -UserId $userObjectId -AuthorizationInfo $user.AuthorizationInfo
    

Actualización de identificadores de usuario de certificado mediante Microsoft Entra Connect

Para actualizar los identificadores de usuario de certificado para usuarios federados, configure Microsoft Entra Connect para sincronizar userPrincipalName con los valores de certificateUserId.

  1. En el servidor de Microsoft Entra Connect, busque e inicie el Editor de reglas de sincronización.

    Screenshot of Synchronization Rules Editor.

  2. Haga clic en Dirección y en Saliente.

    Screenshot of outbound synchronization rule.

  3. Busque la regla Out to Microsoft Entra ID – User Identity, seleccione Editar y haga clic en para confirmar.

    Screenshot of user identity.

  4. Escriba un número alto en el campo Precedencia y haga clic en Siguiente.

    Screenshot of a precedence value.

  5. Haga clic en Transformaciones>Agregar transformación. Es posible que tenga que desplazarse hacia abajo en la lista de transformaciones para poder crear una nueva.

Sincronización de X509:<PN>PrincipalNameValue

Para sincronizar X509:<PN>PrincipalNameValue, cree una regla de sincronización de salida y elija Expresión en el tipo de flujo. Seleccione el atributo de destino como certificateUserIds y, en el campo de origen, agregue la siguiente expresión. Si el atributo de origen no es userPrincipalName, puede cambiar la expresión en consecuencia.

"X509:<PN>"&[userPrincipalName]

Screenshot of how to sync x509.

Sincronización de X509:<RFC822>RFC822Name

Para sincronizar X509:<RFC822>RFC822Name, cree una regla de sincronización de salida y elija Expresión en el tipo de flujo. Seleccione el atributo de destino como certificateUserIds y, en el campo de origen, agregue la siguiente expresión. Si el atributo de origen no es userPrincipalName, puede cambiar la expresión en consecuencia.

"X509:<RFC822>"&[userPrincipalName]

Screenshot of how to sync RFC822Name.

  1. Haga clic en Atributo de destino, seleccione CertificateUserIds, haga clic en Origen, seleccione UserPrincipalName y haga clic en Guardar.

    Screenshot of how to save a rule.

  2. Haga clic en ACEPTAR para continuar.

Nota:

Asegúrese de usar la versión más reciente de Microsoft Entra Connect.

Para obtener más información sobre las expresiones de aprovisionamiento declarativo, consulte Microsoft Entra Connect: expresiones de aprovisionamiento declarativo.

Sincronización del atributo alternativeSecurityId desde AD en CertificateUserIds para la autenticación basada en certificados de Microsoft Entra

El atributo altSecurityIdentities no forma parte del conjunto de atributos predeterminados. Un administrador debe agregar un nuevo atributo al objeto person en metaverso y, a continuación, crear las reglas de sincronización adecuadas para retransmitir estos datos a CertificateUserIds en Entra ID.

  1. Abra Metaverso Designer y seleccione el objeto person. Para crear el atributo alternativeSecurityId, haga clic en Nuevo atributo. Seleccione Cadena (no indexable) para crear un tamaño de atributo de hasta 1024 caracteres, que es la longitud máxima admitida para CertificateUserIds. Si selecciona Cadena (indexable), el tamaño máximo de un valor de atributo es de 448 caracteres. Asegúrese de seleccionar Multivalor.

    Screenshot of how to create a new attribute.

  2. Abra el Diseñador de Metaverso y seleccione alternativeSecurityId para agregarlo al objeto de persona.

    Screenshot of how to add alternativeSecurityId to the person object.

  3. Cree una regla de sincronización de entrada para transformar del atributo altSecurityIdentities a alternativeSecurityId.

    En la regla de entrada, use las siguientes opciones.

    Opción Valor
    Nombre Nombre descriptivo de la regla, como: En desde Active Directory - altSecurityIdentities
    Sistema conectado Su dominio de Active Directory local
    Tipo de objeto de sistema conectado usuario
    Propiedades de objeto de metaverso persona
    Prioridad Elija un número inferior a 100 que no esté siendo usado actualmente

    A continuación, haga clic en Transformaciones y cree una asignación directa al atributo de destino alternativeSecurityId desde el atributo fuente altSecurityIdentities, como se muestra en la captura de pantalla siguiente.

    Screenshot of how to transform from altSecurityIdentities to alternateSecurityId attribute.

  4. Cree una regla de sincronización de salida para transformación desde el atributo alternativeSecurityId al atributo certificateUserIds en Entra ID.

    Opción Valor
    Nombre Nombre descriptivo de la regla, como: Out to Microsoft Entra ID - certificateUserIds
    Sistema conectado Su dominio de Microsoft Entra
    Tipo de objeto de sistema conectado usuario
    Propiedades de objeto de metaverso persona
    Prioridad Elija un número alto que no se use actualmente sobre todas las reglas predeterminadas, como 150

    A continuación, haga clic en Transformaciones y cree una asignación directa al atributo de destino certificateUserIds desde el atributo fuente alternativeSecurityId, como se muestra en la captura de pantalla siguiente.

    Screenshot of outbound synchronization rule to transform from alternateSecurityId attribute to certificateUserIds.

  5. Ejecute la sincronización para rellenar los datos en el atributo certificateUserIds.

  6. Para comprobar que se ha realizado correctamente, vea la información de autorización de un usuario en Entra ID.

    Screenshot of successful synchronization.

Para asignar un subconjunto de valores del atributo altSecurityIdentities, reemplace la Transformación en el paso 4 por una Expresión. Para utilizar una Expresión, diríjase a la pestaña Transformaciones y cambie la opción FlowType a Expresión, el atributo de destino a certificateUserIds y posteriormente escriba la siguiente expresión en el campo Origen. En el ejemplo siguiente solo se filtran los valores que se alinean con los campos de asignación de certificados SKI y SHA1PublicKey:

Screenshot of an Expression.

Expresión de código:

IIF(IsPresent([alternativeSecurityId]),
                Where($item,[alternativeSecurityId],BitOr(InStr($item, "X509:<SKI>"),InStr($item, "X509:<SHA1-PUKEY>"))>0),[alternativeSecurityId]
)

Los administradores pueden filtrar valores de altSecurityIdentities que se alinean con los patrones admitidos. Asegúrese de que la configuración de CBA se ha actualizado para admitir los enlaces de nombre de usuario que se sincronizan con certificateUserIds para habilitar la autenticación mediante estos valores.

Pasos siguientes