Compartir a través de


Cmdlets de Azure AD para trabajar con atributos de extensión

Acerca de los atributos de extensión

Los atributos de extensión proporcionan una forma cómoda de ampliar su directorio de Azure AD con nuevos atributos que puede usar para almacenar los valores de atributo para los objetos del directorio. Se puede asociar un atributo de extensión a los siguientes tipos de objeto:

  • users
  • detalles de inquilino
  • devices
  • applications

Las propiedades de extensión se registran en un objeto de aplicación en el directorio del desarrollador. Después de que la aplicación haya sido aceptada por un usuario o un administrador en el directorio del desarrollador, la propiedad se agrega al tipo de directorio de destino y pasa a estar accesible inmediatamente en el directorio del desarrollador. Para una aplicación de varios inquilinos, cuando un usuario o un administrador da el consentimiento a la aplicación de otra organización, las propiedades de extensión se vuelven accesibles de inmediato en el tipo de directorio de destino del directorio de la otra organización.

Si una organización da permisos de "solo lectura" para una aplicación con extensiones registradas, las propiedades seguirán accesibles en el directorio de la otra organización. Además, cualquier aplicación con consentimiento puede acceder a las propiedades de extensión de una organización, no solo a la aplicación a la que se están registrando. Las demás aplicaciones con consentimiento de esa organización pueden leer o escribir los valores de la nueva propiedad de extensión si tienen los permisos necesarios.

Si la aplicación se elimina o se quita el consentimiento en el directorio de la otra organización, la propiedad de extensión deja de estar accesible en el objeto de directorio de destino. Si la aplicación elimina la extensión, también deja de estar accesible en el objeto de directorio de destino. Si una aplicación de varios inquilinos agrega propiedades de extensión adicionales después de haberse otorgado el consentimiento, estas propiedades pasan a estar accesibles inmediatamente en el directorio de la otra organización.

Nota

Si el valor de una propiedad de extensión se establece en un objeto y esa propiedad deja de estar accesible en el directorio de ese objeto, la propiedad sigue contando para el límite de 100 valores de propiedad de extensión de ese objeto. La única manera de dejar de tener en cuenta el valor de propiedad cuando se ha establecido es establecerlo explícitamente en un valor nulo. No puede hacer esto si la propiedad de extensión no está accesible.

Puede leer más acerca de las propiedades de extensión en este artículo.

Ejemplos

En estos ejemplos se va a usar un objeto de usuario y se trabajará con las propiedades de extensión. En primer lugar buscaremos el elemento ObjectId del usuario para que se pueda hacer referencia a él fácilmente:

$UserId = (Get-AzureADUser -Searchstring <UPN of the user we're working with>).ObjectId 

Obtención de todos los valores de propiedad de un usuario

(Get-AzureADUser -ObjectId $UserId).ToJson()

Obtención de un usuario y visualización de todas las propiedades de extensión

Get-AzureADUser -ObjectId $UserId | Select -ExpandProperty ExtensionProperty

Este cmdlet devuelve todas las propiedades de extensión de un usuario con sus valores actuales:

Key                                                                   Value
---                                                                   -----
odata.metadata                                                        https://graph.windows.net/85b5ff1e-0402-400c-9e3c-0f9e965325d1/$metad...
odata.type                                                            Microsoft.DirectoryServices.User
thumbnailPhoto@odata.mediaContentType                                 image/Jpeg
extension_e5e29b8a85d941eab8d12162bd004528_extensionAttribute13       Test 

Recuperar el valor de una propiedad de extensión específica para un usuario

(Get-AzureADUserExtension -ObjectId $UserId).get_item("extension_e5e29b8a85d941eab8d12162bd004528_wWWHomePage")

Recuperación de todas las propiedades de extensión que se definen en el inquilino

Get-AzureADApplication | Get-AzureADApplicationExtensionProperty 

Creación de una nueva propiedad de extensión

Las propiedades de extensión siempre se crean para una aplicación específica. Si desea agregar propiedades genéricas a su directorio, puede crear una aplicación de marcador de posición:

$MyApp = (New-AzureADApplication -DisplayName "My Properties Bag" -IdentifierUris "https://dummy").ObjectId 

Tenga en cuenta que debe crear una entidad de servicio para esta aplicación en el directorio, por lo que puede crear una nueva propiedad de extensión:

New-AzureADServicePrincipal -AppId (Get-AzureADApplication -SearchString "My Properties Bag").AppId 

Ahora podemos utilizar esta aplicación para crear una nueva propiedad de extensión:

New-AzureADApplicationExtensionProperty -ObjectId $MyApp -Name "MyNewProperty" -DataType "String" -TargetObjects "User" 

Cuando se completa correctamente el cmdlet, devuelve el nuevo objeto de atributo de extensión:

ObjectId                             Name                                                     TargetObjects
--------                             ----                                                     -------------
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb extension_0380f0f700c040b5aa577c9268940b53_MyNewProperty {User}

Nota

El nombre de la nueva propiedad se genera a partir del formato "Extension_" + <objectID de la aplicación> de marcador de posición + "_" + <el nombre de la nueva propiedad>. El valor exacto del nombre será por tanto diferente en las distintas aplicaciones que se crean. Puede asignar una propiedad a más de un tipo de objeto. En nuestro ejemplo se usa solo un TargetObject, "User", pero también podría haber especificado "User", "Group", y de esta forma poder asignar el objeto a los objetos user y group.

Establecimiento de los valores de propiedades de extensión

Con la propiedad de extensión que hemos usado en el ejemplo anterior, ahora podemos asignarle un valor:

Set-AzureADUserExtension -ObjectId $UserId -ExtensionName "extension_0380f0f700c040b5aa577c9268940b53_MyNewProperty" -ExtensionValue "MyNewValue" 

Recuperación de todos los atributos de extensión definidos para la aplicación

Puede recuperar la lista de atributos de extensión que se han definido para la aplicación:

Get-AzureADApplicationExtensionProperty -ObjectId (Get-AzureADApplication -SearchString "My Properties Bag").ObjectId 

Este cmdlet devuelve la lista de propiedades de extensión en la aplicación:

ObjectId                             Name                                                      TargetObjects
--------                             ----                                                      -------------

aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb extension_0380f0f700c040b5aa577c9268940b53_MyNewProperty  {User}

Eliminación de propiedades de extensión

Si ya no necesita una propiedad de extensión, puede eliminarla:

Remove-AzureADApplicationExtensionProperty -ObjectId (Get-AzureADApplication -SearchString "My Properties Bag").ObjectID -ExtensionPropertyId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb 

Nota

No puede quitar el atributo de Azure AD una vez extendido ni eliminar el Tenant Schema Extension App sin generar una solicitud al equipo de PayOps. Además, desactivar la opción de extensiones de directorio del asistente de Azure AD no quitará los atributos ni le permitirá deshacerse de la aplicación.