Cómo actualizar fotos para cuentas de invitado de Azure AD
Poner la mejor cara posible a las cuentas de invitados
Hace varios años, escribí sobre por qué es bueno agregar fotografías de usuarios a las cuentas de invitado de Azure AD. En ese momento, Teams todavía estaba en su infancia, pero ya estaba claro que Azure B2B Collaboration es un método importante para permitir que personas externas accedan a los recursos de los inquilinos. Darles una cara a esas personas externas agregando fotos a sus cuentas de invitados tiene sentido en un mundo donde las aplicaciones resaltan las fotos de los usuarios de muchas maneras, como mostrándolas en encabezados de correo electrónico o chats de Teams.
El tiempo avanza y la sombra proyectada por más de 280 millones de usuarios de Teams en todo el panorama de Microsoft 365 ahora es enorme. El paso del tiempo también significa que la obsolescencia del módulo de Azure AD que contiene el cmdlet Set-AzureADUserThumbnailPhoto para actualizar las fotos de los usuarios pronto quedará obsoleto. Es hora de descubrir cómo actualizar fotos para cuentas de invitados con el SDK de Microsoft Graph PowerShell, especialmente si ha migrado varios contactos de correo para convertirlos en cuentas de invitados.
Miniaturas para invitados
Antes de comenzar, es importante comprender que las cuentas de invitados solo necesitan fotografías en miniatura (pequeñas). Las cuentas de usuario necesitan fotos de mayor definición para verse bien cuando aparecen en reuniones en línea de Teams (si no estás usando un avatar de malla). Como se explica en este artículo, es mejor usar el cmdlet Set-UserPhoto de Exchange Online para actualizar las cuentas de usuario porque carga imágenes de mayor calidad en los buzones de correo que las miniaturas utilizadas por Azure AD.
Una parte importante de la preparación es encontrar fotografías adecuadas para las cuentas de invitados. Puede pedirles a los invitados su imagen preferida o hacer una búsqueda en Internet para encontrar fotografías adecuadas. LinkedIn es mi primer puerto de escala cuando busco la foto de alguien. La gente suele publicar una bonita foto suya en LinkedIn que se ve bien incluso cuando se reduce a una miniatura. Otra ventaja de utilizar imágenes de LinkedIn es que se incluyen en los perfiles públicos. En otras palabras, las personas suben su imagen para que otros puedan ver cómo lucen. Como tal, es poco probable que tenga problemas de derechos de autor al utilizar estas imágenes para cuentas de invitado.
Es fácil copiar fotos de perfiles de LinkedIn y guardarlas como archivos JPG usando un programa como Paint. Guardo las fotos usando sus dimensiones originales (muchas fotos de LinkedIn tienen 600 x 600 píxeles) y dejo que Azure AD las comprima cuando agrega imágenes en miniatura a las cuentas. La imagen más grande que he usado es de 144 KB; el más pequeño (una imagen de LinkedIn muy antigua) pesa 6 KB.
El script espera que las imágenes estén disponibles en una ubicación determinada. Usé c:\UserPhotos\; puede actualizar el script para que apunte a cualquier ubicación que elija utilizar. Lo importante es que los archivos de imagen lleven el nombre del nombre para mostrar de la cuenta de invitado. Por ejemplo:
Jack Jones.jpg
Jane Smith.jpg
Procesamiento de guiones
El guión sigue estos pasos.
- Conéctese a Microsoft Graph con el permiso User.ReadWrite.All (requerido para actualizar cuentas de Azure AD).
- Defina la ubicación para encontrar las fotos.
- Defina una foto predeterminada para usar cuando no haya ninguna disponible para una cuenta de invitado. Utilizo un ícono de persona simple libre de derechos (use una búsqueda en Internet para encontrar su imagen preferida).
- Utilice el cmdlet Get-MgUser para buscar todas las cuentas de invitados.
- Algunas organizaciones añaden el nombre de la empresa para la que trabaja la cuenta de invitado al nombre para mostrar. Para normalizar el nombre para mostrar, el script busca un paréntesis de apertura y elimina el texto adjunto si lo encuentra. Por ejemplo, el script convierte "Tony Redmond (Practical 365)" en "Tony Redmond". Si su organización utiliza un método diferente para resaltar las empresas a las que pertenecen los invitados, deberá ajustar este código.
- Para cada cuenta de invitado, verifique si hay una foto disponible en la biblioteca. Si es así, verifique si es más reciente que la foto aplicada actualmente a la cuenta. El script utiliza un atributo personalizado para almacenar una marca de tiempo cuando aplica una foto, por lo que verifica eso (si hay uno disponible) y la marca de tiempo de la foto para decidir si hay una foto más nueva disponible. Si es así, el script actualiza la cuenta con el cmdlet Set-MgUserPhotoContent .
- Si la cuenta nunca tuvo una foto y hay una disponible, el script actualiza la cuenta.
Puede descargar el script desde GitHub. No dude en sugerir mejoras.
Acelerar las cosas
Obtener todas las cuentas de invitados para procesar fotografías puede ser una buena manera de realizar una población inicial de miniaturas. El script también maneja actualizaciones cuando hay nuevas fotos disponibles para una cuenta. Por ejemplo, cambiará la imagen predeterminada y la reemplazará con una imagen personalizada. Sin embargo, procesar todas las cuentas de invitados cada vez no es la forma más inteligente de proceder, a menos que solo haya unos pocos cientos de cuentas con las que tratar. Dada la popularidad de Teams y el uso de cuentas de invitados por parte de SharePoint para compartir documentos con usuarios externos, es probable que la cantidad de cuentas de invitados crezca con el tiempo. Las organizaciones pueden eliminar algunas cuentas de invitados mediante revisiones de acceso de Azure AD o escribiendo un script de PowerShell para identificar cuentas de invitados inactivas, pero en general, se puede esperar un crecimiento constante en el número de invitados.
Para acelerar las cosas, podemos encontrar qué cuentas de invitados necesitan nuestra atención usando el cmdlet Get-MgPhoto para detectar si una cuenta tiene una foto, no tiene foto o usa la foto predeterminada (según su altura). y ancho en píxeles). Este script hace el trabajo y genera conjuntos de cuentas a las que les faltan fotos y aquellas con la foto predeterminada.
[array]$Guests = Get-MgUser -Filter "Usertype eq 'Guest'" -All | Sort-Object DisplayName
$GuestsNoPhotos = [System.Collections.Generic.List[Object]]::new()
[int]$GuestWithPhotos = 0
ForEach ($Guest in $Guests) {
$Photo = Get-MgUserPhoto -UserId $Guest.Id -ErrorAction SilentlyContinue
If ($Photo) {
If ($Photo.Height -eq 150 -and $Photo.Width -eq 150) {
Write-Host ("Guest account {0} has a default photo" -f $Guest.DisplayName) -foregroundcolor Yellow
$DataLine = [PSCustomObject] @{
Name = $Guest.DisplayName
Id = $Guest.Id
Photo = "Default" }
$GuestsNoPhotos.Add($DataLine)
} Else {
# Write-Host ("Guest account {0} has a personalized photo" -f $Guest.DisplayName)
$GuestsWithPhotos++
}
} Else {
Write-Host ("Guest account {0} has no photo" -f $Guest.DisplayName) -foregroundcolor red
$DataLine = [PSCustomObject] @{
Name = $Guest.DisplayName
Id = $Guest.Id
Photo = "Missing" }
$GuestsNoPhotos.Add($DataLine)
}
}
[array]$MissingPhotos = $GuestsNoPhotos | Where-Object {$_.Photo -eq "Missing"}
[array]$DefaultPhotos = $GuestsNoPhotos | Where-Object {$_.Photo -eq "Default"}
Write-Host " "
Write-Host ("Total guest accounts (0}" -f $Guests.Count)
Write-Host ("Guest accounts with personalized photos {0}" -f $GuestsWithPhotos)
Write-Host ("Guest accounts with the default photo {0}" -f $DefaultPhotos.Count)
Write-Host ("Guest accounts with missing photos {0}" -f $MissingPhotos.Count)
Write-Host ""
Write-Host ("Please find photos for these accounts: {0}" -f ($MissingPhotos.Name -join ", "))
Write-Host ("Consider replacing the default photo with a customized image for these accounts: {0}" -f ($DefaultPhotos.Name -join ", "))
Para revisar qué cuentas de invitados necesitan atención, puede exportar la información a un archivo CSV y usarlo para realizar un seguimiento de la recopilación de fotografías. Cuando todo está listo, el script puede leer el archivo CSV y procesar esas cuentas en lugar de tener que buscar todas las cuentas de invitados y comprobar las que tienen una foto en perfecto estado.
Las cuentas de usuario también necesitan fotos
Si bien es bueno mejorar la apariencia de las cuentas de invitados con fotografías, es aún más importante tener fotografías para las cuentas de usuarios. Las aplicaciones de Microsoft 365 muestran fotografías de usuarios en tarjetas de perfil, correos electrónicos y otros lugares. Los scripts que se describen aquí se adaptan fácilmente para procesar fotografías para cuentas de usuario. Como se mencionó anteriormente, el cambio principal es que debe usar el cmdlet Set-UserPhoto para cargar una foto de mayor calidad. A diferencia de la búsqueda de fotografías para cuentas de invitados, debería ser mucho más fácil encontrar fotografías de empleados, tal vez incluso utilizando una fuente del sistema de recursos humanos de la organización. Al menos, esa es la teoría.
Gestión de riesgos de ciberseguridad para Active Directory
Descubra cómo prevenir y recuperarse de ataques AD a través de estas soluciones de gestión de riesgos de ciberseguridad.
