GRUPO EBIM 01 Ago 24
Implementación de Microsoft Graph en .NET CORE 8 para descargar y subir archivos
-
Requisitos Previos
- Cuenta de Microsoft 365: Necesitarás una cuenta de Microsoft 365 con permisos adecuados para acceder a OneDrive.
- Registro de Aplicación en Azure AD: La aplicación debe estar registrada en Azure Active Directory para obtener el ClientId y el ClientSecret.
- SDK de Microsoft Graph: La aplicación debe incluir el SDK de Microsoft Graph.
-
Registro de la Aplicación en Azure AD
- Registrar la Aplicación:
-
- Ve a Azure Portal y navega a Azure Active Directory -> App registrations.
- Haz clic en New registration y sigue los pasos para registrar tu aplicación.
- Obtén el ClientId y el TenantId.
- Configurar Permisos:
-
- En la sección API permissions, agrega permisos para Files.ReadWrite.All y Sites.ReadWrite.All.
- Concede permisos de administrador para estos permisos.
- Crear un Secreto de Cliente:
-
- En Certificates & secrets, crea un nuevo secreto de cliente (ClientSecret).
-
Configuración del Proyecto .NET Core 8
- Se instalan las siguientes librerías:
-
- Install-Package Microsoft.Graph.Auth -Version 1.0.0-preview.7
- Install-Package Microsoft.Graph -Version 4.11.0
- Install-Package Microsoft.identity.Client -Version 4.49.1
4. Implementación:
- Se implementan las siguientes clases:
- ClientCredentialProvider: Se utiliza para gestionar la autenticación de aplicaciones mediante credenciales de cliente, lo que permite el acceso a los recursos de Microsoft Graph en nombre de la aplicación.
- GraphServiceClient: Es una clase proporcionada por Microsoft para facilitar el acceso a la API de Microsoft Graph desde aplicaciones .NET y otros entornos compatibles. Esta clase encapsula la lógica necesaria para realizar solicitudes HTTP a la API de Graph y proporciona métodos y propiedades convenientes para interactuar con los recursos de Graph
- IConfiguration: Esta interfaz proporciona métodos y propiedades para configurar diversos aspectos del cliente, como la autenticación, la URL base de la API de Microsoft Graph y otras opciones de configuración relevantes
- Se implementan la siguiente función:
- Esta función mediante la clase ConfidentialClientApplicationBuilder se utilizaba para construir y configurar instancias de aplicaciones cliente confidenciales en el contexto de la autenticación con Microsoft Identity Platform, lo que permite a las aplicaciones interactuar con servicios de Microsoft como Microsoft Graph de manera segura y autenticada. Para que la conexión sea exitosa se necesita los siguientes datos:
- clientId: Es un identificador único asignado a una aplicación registrada en el portal de Microsoft y se utiliza como parte del proceso de autenticación para autorizar el acceso a los recursos protegidos por servicios como Microsoft Graph.
- clientSecret: Es un valor secreto asociado con una aplicación registrada en el portal de Microsoft que se utiliza como parte del proceso de autenticación para obtener tokens de acceso y acceder a recursos protegidos en nombre de la aplicación.
- tenantId: es un identificador único asignado a cada inquilino en el portal de Microsoft y se utiliza para identificar y dirigir las solicitudes de autenticación y autorización a la instancia correcta del portal de Microsoft donde está registrada una aplicación y donde residen los usuarios y recursos asociados a esa organización.
- Para el uso de carga de archivos en OneDrive previamente se asigna un correo propietario de api registrada en el portal de Microsoft:
- DriveItem es una entidad en Microsoft Graph que representa un elemento en OneDrive o en SharePoint. En otras palabras, cada archivo, carpeta o elemento dentro de OneDrive o SharePoint es representado por un objeto DriveItem en Microsoft Graph.
Los objetos DriveItem contienen información sobre el elemento que representan, como su nombre, tamaño, tipo de archivo, identificador único, propiedades específicas del tipo de archivo, permisos de acceso, entre otros metadatos relevantes.
Algunas de las operaciones que se pueden realizar con DriveItem a través de Microsoft Graph incluyen:
-
- Obtener información sobre un elemento: Puedes obtener detalles sobre un elemento específico utilizando su identificador único (id) y la ruta en la que se encuentra en OneDrive o SharePoint.
- Crear, modificar y eliminar elementos: Puedes crear nuevos elementos, modificar propiedades de elementos existentes o eliminar elementos utilizando las operaciones de escritura disponibles en Microsoft Graph.
- Administrar permisos de acceso: Puedes ver y gestionar los permisos de acceso de un elemento utilizando las operaciones proporcionadas por Microsoft Graph. ✓ Descargar y cargar archivos: Puedes descargar el contenido de un archivo o cargar un archivo nuevo utilizando las operaciones disponibles en Microsoft Graph.
5. Método de Carga y Descarga
- Método de carga
-
- Creación del flujo de datos: Se carga el contenido del archivo en un MemoryStream.
- Creación de una sesión de subida: Se crea una sesión de subida en OneDrive para manejar archivos grandes.
- Definición del tamaño de los fragmentos: Se establece el tamaño máximo de cada fragmento en 320 KB.
- Configuración de la tarea de subida: Se configura una tarea para manejar la subida del archivo en fragmentos.
- Subida del archivo: Se suben los fragmentos del archivo de manera asíncrona utilizando la sesión de subida.
Este proceso permite subir archivos de manera eficiente y segura, incluso si son muy grandes, evitando problemas de tiempo de espera y errores de conexión.
- Método de descarga
-
- Obtención del Elemento: Se busca el elemento en OneDrive usando Microsoft Graph.
- Verificación y Extracción de Datos: Se verifica que el elemento no sea nulo y se extrae la URL de descarga directa.
- Descarga del Archivo: Se usa HttpClient para descargar el archivo desde la URL de descarga directa.
- Conversión del Contenido: El contenido del archivo se convierte a un arreglo de bytes.
- Respuesta HTTP: Se devuelve el archivo como una respuesta HTTP al cliente para que pueda descargarlo.