Cómo Añadir el Atributo sAMAccountName en Azure Active Directory

En entornos híbridos de Active Directory y Azure Active Directory (Entra ID), es crucial sincronizar y mapear atributos de usuario de manera efectiva para asegurar una integración fluida entre sistemas locales y en la nube. Uno de los atributos importantes en muchos entornos es el sAMAccountName, que se utiliza para identificar de manera única a un usuario en Active Directory. En este artículo, te mostramos cómo añadir el atributo sAMAccountName a tu aplicación en Entra ID utilizando PowerShell.

Crear una Propiedad de Extensión para sAMAccountName

Primero, necesitaremos crear una propiedad de extensión en Entra ID para almacenar el sAMAccountName. Esta propiedad se añadirá a la aplicación específica y permitirá que se incluya el sAMAccountName en los tokens emitidos por Entra ID.

  1. Obtener el Object ID de la AplicaciónLa variable $AppObjectId debe contener el Object ID de la aplicación para la que deseas añadir la propiedad de extensión. Puedes encontrar este ID en el portal de Azure o utilizando PowerShell.
$AppObjectId = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"

Crear la Propiedad de Extensión

Utiliza el cmdlet New-AzureADApplicationExtensionProperty para añadir una nueva propiedad de extensión llamada sAMAccountName. Esta propiedad será de tipo String y se aplicará a los objetos de tipo User.

$extensionProperty = New-AzureADApplicationExtensionProperty -ObjectId $AppObjectId -Name "samaccountname" -DataType "String" -TargetObjects "User"

Verificar la Creación de la Propiedad de Extensión

Para confirmar que la propiedad se ha creado correctamente, ejecuta el siguiente comando y revisa la salida:

PS C:\windows\system32> $extensionProperty

ObjectId                             Name                                                      TargetObjects
--------                             ----                                                      -------------
cfe1cd61-42a2-4d05-acf7-cef7f2a6731c extension_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_samaccountname {User} 

La salida muestra detalles como ObjectId, Name y TargetObjects, confirmando que la propiedad ha sido añadida.

Actualizar el Manifiesto de la Aplicación

Después de crear la propiedad de extensión, es necesario actualizar el manifiesto de la aplicación para incluir el nuevo atributo en la sección optionalClaims.

  1. Editar el ManifiestoAccede al manifiesto de la aplicación y añade la propiedad de extensión en la sección optionalClaims. Asegúrate de reemplazar XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX con el valor real del ObjectId de tu aplicación:
{
    "name": "extension_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_samaccountname",
    "source": null,
    "essential": false,
    "additionalProperties": []
}

Manifiesto:

Crear y Asignar una Política de Mapeo de Reclamos

Para que el sAMAccountName esté disponible en los tokens JWT, necesitamos crear una política de mapeo de reclamos que asocie este atributo con un reclamo en el token.

  1. Definir la Política de Mapeo de Reclamos Utiliza el siguiente script para crear una política de mapeo de reclamos personalizada. Esta política asignará el atributo sAMAccountName al reclamo sAMAccountName en el token JWT.
$definition = @(
    '{"ClaimsMappingPolicy":{"Version":1,"IncludeBasicClaimSet":"true", "ClaimsSchema": [
        {"Source":"user","ID":"onpremisessamaccountname","JwtClaimType":"samaccountname"}
    ]}}'
)
$Policy = New-AzureADPolicy -Definition $definition -DisplayName "CustomClaimsPolicy" -Type "ClaimsMappingPolicy" -IsOrganizationDefault $false

Asignar la Política al Service Principal

Finalmente, asigna la política al Service Principal de la aplicación con el siguiente comando. La variable $ServicePrincipalObjectId representa el Object ID del Enterprise Application del Service Principal:

$ServicePrincipalObjectId = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
Add-AzureADServicePrincipalPolicy -Id $ServicePrincipalObjectId -RefObjectId $Policy.Id

Al acceder a token configuration, podemos ver la extensión de sAMAccountName

Posibles errores:

ServerError: invalid_request: 50146 - [2024-08-08 09:33:04Z]: AADSTS50146: This application is required to be configured with an application-specific signing key. It is either not configured with one, or the key has expired or is not yet valid. Trace ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX Correlation ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX Timestamp: 2024-08-08 09:33:04Z - Correlation ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - Trace ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

Modificación del Manifesto:

Se realizó una actualización en el manifiesto de la aplicación, cambiando las siguientes configuraciones:

Antes:

"acceptMappedClaims": null,
"accessTokenAcceptedVersion": null,
"addIns": [],
"allowPublicClient": null

Después:

"acceptMappedClaims": true,
"accessTokenAcceptedVersion": 2,
"addIns": [],
"allowPublicClient": true

Conclusión

Añadir el atributo sAMAccountName a Entra ID permite una integración más coherente entre Active Directory y servicios en la nube. Siguiendo estos pasos, podrás extender tu aplicación en Entra ID para incluir este atributo en los tokens y asegurarte de que toda la información relevante esté disponible para tus aplicaciones y servicios.

:wq!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *