La API de Microsoft Graph es un servicio que te permite leer, modificar y gestionar casi todos los aspectos de Azure AD y Office 365 bajo un único punto de conexión de API REST. En este artículo, aprende cómo transformar tu API a la API de PowerShell Graph.
Requisitos previos
Si deseas seguir este artículo, asegúrate de cumplir con los siguientes criterios:
- Ejecutar Windows PowerShell 5.1 (Esta es la versión con la que se realizó la prueba. Otras versiones podrían funcionar, pero no están garantizadas)
- Tener un inquilino de Azure
- Autenticado en Azure con una cuenta con permisos de administrador global o permisos de registro de aplicación en la suscripción y un administrador global para aceptar las solicitudes de registro de tu aplicación.
Crear una identidad de aplicación para la API de Microsoft Graph
Para acceder a la API de Microsoft Graph, primero necesitas una identidad para obtener un token de OAuth. Esto se hace principalmente con una identidad de aplicación que puedes crear en el Portal de Azure. Puedes crear una identidad de aplicación mediante el portal de Azure. Para hacerlo:
- Ve al Portal de Azure y ve a Azure Active Directory.
- Haz clic en Registros de aplicaciones bajo Gestionar en el menú de la izquierda y haz clic en el botón Nuevo registro.

- Ingresa un nombre para tu aplicación y haz clic en Registrar.
- Copia el identificador de la aplicación (Application Id) para usarlo más adelante.

Crear secretos para la API de Microsoft Graph.
Puedes autenticarte en la API de Graph con dos métodos principales: AppId/Secret y autenticación basada en certificados. Necesitarás autenticarte al conectarte a la API de Graph con PowerShell.
Vamos a ver cómo autenticar con ambos métodos.
AppId/Secret
Un ID de aplicación/secreto es como un nombre de usuario/contraseña regular. El ID de la aplicación consta de un GUID en lugar de un nombre de usuario y la contraseña es simplemente una cadena aleatoria.
Para crear un secreto, haz clic en Certificados y secretos en el menú izquierdo y presiona en Nuevo secreto del cliente.

Ingresa una descripción para el secreto y selecciona cuándo quieres que expire. Ahora solo es cuestión de solicitar permiso para acceder a los datos que necesitas.
Certificado
Existe la posibilidad de crear un certificado autofirmado y cargar su clave pública en Azure. Esta es la forma preferida y más segura de autenticación.
Primero deberás generar un certificado autofirmado. Afortunadamente, esto se hace fácilmente con PowerShell.
Ahora, cargue el certificado autofirmado que exportó a $CerOutputPath
en su aplicación de Azure haciendo clic en Certificados y secretos en el menú de la izquierda y presionando en Cargar certificado.

Agregar permisos a la aplicación
Dar a la aplicación los permisos adecuados es importante, no solo para la funcionalidad de su aplicación, sino también para la seguridad. El conocimiento de esto y (casi) todo lo demás en la API de Microsoft Graph se puede encontrar en la documentación.
Una vez que haya configurado esto, voy a recopilar todos los eventos de seguridad de mi inquilino. Para poder hacer eso, necesito SecurityEvents.Read.All como permiso mínimo. Con esto, puedo recopilar y tomar medidas sobre eventos de viajes imposibles, usuarios que se conectan a través de VPN/TOR, y demás.
Para agregar el permiso SecurityEvents.Read.All a tu aplicación, haz clic en Permisos de API y luego en Agregar permiso. Esto te presentará no solo la API de Graph, sino también un montón de otras aplicaciones en Azure. La mayoría de estas aplicaciones son fáciles de conectar una vez que sabes cómo conectarte a la API de Microsoft Graph.
Haz clic en Microsoft Graph > Permisos de aplicación > Eventos de seguridad y marca el SecurityEvents.Read.All. Después, presiona el botón Agregar permiso.
¿Viste que la columna Consentimiento de administrador requerido estaba configurada como Sí en ese permiso? Esto significa que un administrador del inquilino debe aprobar antes de que se agregue el permiso a la aplicación.

Si eres un administrador global, presiona el Dar consentimiento de administrador para o pídele a un Administrador Global que lo apruebe. Pedir permiso al usuario en lugar de que un administrador simplemente configure permisos de lectura/escritura es una gran parte de la autenticación de OAuth. Pero esto nos permite evitarlo para la mayoría de los permisos en Microsoft Graph.
Probablemente ya hayas visto esto en Facebook o Google: “¿Permites que la aplicación X acceda a tu perfil?”

Ahora estás listo; ¡vamos a iniciar sesión y obtener algunos datos!
Adquiera un Token de Acceso (ID de Aplicación y Secreto)
Para esto, necesitaremos enviar una solicitud para obtener un token de acceso desde un punto de conexión de Microsoft Graph OAuth. Y en el cuerpo de esa solicitud necesitamos proporcionar:
-
client_id
– Su ID de Aplicación – codificado en URL -
client_secret
– El secreto de su aplicación – codificado en URL -
scope
– Una URL codificada que especifique lo que desea acceder -
grant_type
– Qué método de autenticación está utilizando
La URL para el punto de conexión es https://login.microsoftonline.com/<tenantname>/oauth2/v2.0/token. Puede solicitar un token de acceso con PowerShell y la API de Graph utilizando el fragmento de código a continuación.
Adquirir un Token de Acceso (Usando un Certificado)
La autenticación en la API de Microsoft Graph con un certificado es un poco diferente al flujo normal de AppId/Secret. Para obtener un token de acceso usando un certificado, tienes que:
- Crea un encabezado de Java Web Token (JWT).
- Crea un payload de JWT.
- Firma el encabezado y el payload del JWT con el certificado auto-firmado previamente creado. Esto creará un token de acceso hecho por ti mismo utilizado para solicitar un token de acceso de Microsoft Graph.
- Crea un cuerpo de solicitud que contenga:
client_id=<id de aplicación>
client_assertion=<el JWT>
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
scope=<Ámbito Codificado por URL>
grant_type=client_credentials
- Haz una solicitud POST con cuerpo al endpoint de oauth con
Authorization=<JWT>
en su encabezado.
Cómo hacer esto no era obvio en la documentación de Microsoft pero aquí está el script de PowerShell para hacer que esto suceda:
Entendiendo la Salida del Token de Acceso
Una vez que hayas obtenido un token de acceso ya sea a través del ID/secreto de la aplicación o mediante un certificado, deberías ver un objeto con cuatro propiedades.
token_type
– Qué tipo de token esexpires_in
– Tiempo en segundos que el token de acceso es válidoext_expires_in
– Similar aexpires_in
pero para la resistencia en caso de una interrupción del servicio de tokensaccess_token
– Para lo que vinimos
A continuación, crearás un encabezado usando token_type
y access_token
y comenzarás a hacer solicitudes con PowerShell a la API de Microsoft Graph.
Haciendo Solicitudes a la API de Gráficos de Microsoft Powershell
Ahora comienza a hacer algunas solicitudes a la API.
Usando nuestro ejemplo, primero necesitarás la URL para listar alertas de seguridad. Recuerda utilizar la documentación de la API de Gráficos de Microsoft para ver qué se necesita.
En este caso, necesitas un encabezado con Authorization=Bearer <access_token>
y una solicitud GET hacia el endpoint de Alertas de la API de Gráficos. Así es como se hace eso con PowerShell.
Ahora, si tienes alguna alerta de seguridad en la variable $SecurityAlerts
, debería lucir algo así:
Inspeccionar una sola alerta de seguridad como JSON se verá así:
Comprensión y gestión de la paginación de salida de la API
La API de Microsoft Graph tiene un límite por función en la cantidad de elementos que devolverá. Este límite es por función, pero digamos que son 1000 elementos. Eso significa que solo puedes obtener un máximo de 1000 elementos en tu solicitud.
Cuando se alcanza este límite, se utiliza la paginación para entregar el resto de los elementos. Esto se hace agregando la propiedad @odata.nextLink
a la respuesta de tu solicitud. @odata.nextLink
contiene una URL que puedes llamar para obtener la siguiente página de tu solicitud.
Puedes leer todos los elementos revisando esta propiedad y usando un bucle:
Conclusión
Después de aprender cómo autenticarse en la API de Graph, es bastante fácil recopilar datos de ella. Es un servicio potente que se utiliza mucho menos de lo que debería.
Afortunadamente, ya hay muchos módulos disponibles para utilizar la API de Microsoft Graph, pero para satisfacer tus propias necesidades, es posible que necesites crear tu propio módulo para ello. Usando las habilidades que has aprendido en este artículo, deberías estar bien encaminado.
Para obtener más información sobre cómo controlar el acceso de invitados en Office 365, escribí un artículo detallado en mi blog que te animo a echar un vistazo.