Integración con SharePoint
Configurar la integración de SharePoint Online y OneDrive for Business con LibreChat
LibreChat proporciona una integración de nivel empresarial con SharePoint Online y OneDrive for Business, lo que permite a los usuarios explorar, seleccionar y adjuntar archivos de su entorno de Microsoft 365 directamente dentro de las conversaciones de forma fluida.
Descripción general
La integración con SharePoint permite a los usuarios:
- Explorar bibliotecas de documentos de SharePoint y archivos de OneDrive
- Seleccionar varios archivos a la vez (hasta 10 por defecto)
- Ver el progreso de descarga en tiempo real
- Adjuntar archivos de SharePoint a las conversaciones
- Mantenga la seguridad empresarial con controles de acceso adecuados
Funcionalidad empresarial
Esta función requiere Microsoft 365/SharePoint Online y está diseñada para implementaciones empresariales que utilizan la autenticación de Azure Entra ID (anteriormente Azure AD).
Requisitos previos
Antes de configurar la integración con SharePoint, asegúrese de tener:
- Autenticación de Azure Entra ID configurada y funcionando
- Reutilización de tokens habilitada (
OPENID_REUSE_TOKENS=true) - Un ámbito de API expuesto para LibreChat, como
api://<client-id>/access_as_user - Acceso de administrador a su inquilino de Azure para los permisos de la aplicación
- HTTPS habilitado (requerido para entornos de producción)
Requisito crítico
La integración con SharePoint no funcionará sin OPENID_REUSE_TOKENS=true, ya que depende del flujo de tokens "on-behalf-of" para acceder a las APIs de Microsoft Graph.
Configuración del Registro de Aplicaciones de Azure
Paso 1: Configurar los permisos de la API
- Navegue hasta el registro de su aplicación en el Azure Portal
- Ve a API permissions en el menú de la izquierda
- Haz clic en Add a permission
Paso 2: Exponer y otorgar un ámbito (scope) de la API de LibreChat
El flujo on-behalf-of necesita el token de acceso inicial de OpenID para dirigirse a la API de su aplicación LibreChat, no a Microsoft Graph. Exponga un scope de API para que Azure pueda emitir un token con LibreChat como audiencia.
- Ve a Expose an API en el menú de la izquierda
- Establezca el Application ID URI en
api://<client-id>si aún no está configurado - Haz clic en Add a scope
- Asigne al ámbito el nombre
access_as_user - Guarda el scope, luego copia el valor completo del scope:
api://<client-id>/access_as_userLuego, otorga ese scope al registro de la aplicación:
- Volver a API permissions
- Haz clic en Add a permission
- Seleccione APIs my organization uses
- Busque y seleccione su registro de aplicación de LibreChat
- Elija Delegated permissions
- Seleccione
access_as_user - Haz clic en Add permissions
Utilice el valor de alcance completo api://<client-id>/access_as_user en OPENID_SCOPE más adelante en esta guía.
Paso 3: Agregar permisos de SharePoint
Para la interfaz del selector de archivos:
- Seleccione SharePoint de la lista de API
- Elija Delegated permissions
- Buscar y seleccionar:
AllSites.Read- Leer elementos en todas las colecciones de sitios
- Haz clic en Add permissions
Paso 4: Agregar permisos de Microsoft Graph
Para descargas de archivos:
- Haz clic en Add a permission de nuevo
- Seleccione Microsoft Graph
- Elija Delegated permissions
- Buscar y seleccionar:
Files.Read.All- Leer todos los archivos a los que el usuario puede acceder
- Haz clic en Add permissions
Paso 5: Otorgar consentimiento de administrador
- Después de agregar los permisos, los verás listados
- Haz clic en Grant admin consent for [Your Organization]
- Confirma el consentimiento en la ventana emergente
Tus permisos deberían verse así:
| Nombre de la API / Permisos | Tipo | Descripción | Estado |
|---|---|---|---|
| Microsoft Graph - Files.Read.All | Delegated | Leer todos los archivos a los que el usuario puede acceder | ✅ Granted |
| SharePoint - AllSites.Read | Delegated | Leer elementos en todas las colecciones de sitios | ✅ Granted |
| LibreChat - access_as_user | Delegated | Permitir que LibreChat reciba un token compatible con OBO | ✅ Granted |
Configuración del entorno
Agregue las siguientes variables de entorno a su archivo .env:
# OpenID token reuse and OBO-compatible audience
OPENID_REUSE_TOKENS=true
OPENID_SCOPE=openid profile email offline_access api://<client-id>/access_as_user
OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true
# Enable SharePoint file picker
ENABLE_SHAREPOINT_FILEPICKER=true
# Your SharePoint tenant base URL
# Format: https://[your-tenant-name].sharepoint.com
SHAREPOINT_BASE_URL=https://contoso.sharepoint.com
# SharePoint scope for the file picker
# Replace 'contoso' with your actual tenant name
SHAREPOINT_PICKER_SHAREPOINT_SCOPE=https://contoso.sharepoint.com/AllSites.Read
# Microsoft Graph scope for file downloads
SHAREPOINT_PICKER_GRAPH_SCOPE=Files.Read.AllNombre del inquilino
Asegúrate de reemplazar contoso en los ejemplos anteriores con el nombre real de tu tenant de SharePoint. Esto debe coincidir exactamente con tu URL de SharePoint.
Audiencia del Scope de OpenID
Reemplace <client-id> con el ID de aplicación (cliente) de su registro de aplicación de Azure. El scope api://<client-id>/access_as_user le otorga a Azure una audiencia específica de la aplicación para la aserción OBO. Si OPENID_SCOPE solo incluye scopes estándar de OpenID, Azure podría emitir un token de acceso con audiencia de Graph que no puede ser intercambiado nuevamente para acceso a SharePoint o Graph.
Intercambio de Token Userinfo
OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true permite que LibreChat intercambie el token de acceso de la audiencia de la aplicación por un token compatible con userinfo antes de llamar al endpoint de userinfo de OpenID. Esto es necesario para configuraciones de Azure Entra ID donde el OPENID_SCOPE incluye el scope de la API de LibreChat mencionado anteriormente.
Cómo funciona
Flujo de autenticación
- El usuario se autentica a través de Azure Entra ID
- Al acceder al selector de SharePoint, LibreChat intercambia el token del usuario por acceso a SharePoint
- Los tokens se almacenan en caché para un rendimiento óptimo (típicamente 50 minutos)
- Los ámbitos separados garantizan el principio de menor privilegio
Proceso de selección de archivos
- El usuario hace clic en "From SharePoint" en el menú de archivos adjuntos
- El selector de archivos de SharePoint Online se abre en un iframe incrustado
- El usuario explora y selecciona archivos utilizando la interfaz familiar de SharePoint
- Los archivos seleccionados están en cola para su descarga
Proceso de descarga
- Los archivos se descargan en lotes (hasta 3 descargas simultáneas)
- El indicador de progreso muestra el archivo actual y el porcentaje completado
- Los archivos descargados se adjuntan a la conversación
- Las descargas fallidas se reintentan automáticamente
Experiencia del usuario
Acceso a archivos de SharePoint
Cuando se configura correctamente, los usuarios verán una nueva opción en el menú de adjuntos de archivos:
- Haz clic en el icono de adjuntar en la entrada de mensaje
- Selecciona "From SharePoint" en el menú
- Se abrirá el selector de archivos de SharePoint
- Explora y selecciona archivos según sea necesario
- Haz clic en "Select" para comenzar la descarga
Características disponibles
- Selección múltiple de archivos: Seleccione hasta 10 archivos a la vez
- Interfaz familiar: Utiliza el selector de archivos nativo de SharePoint
- Seguimiento del progreso: Vea el progreso de la descarga en tiempo real
- Gestión de errores: Mensajes claros para cualquier problema
- Localización: Soporta múltiples idiomas
Consideraciones de seguridad
Control de acceso
- Solo los archivos a los que el usuario tiene permiso de acceso en SharePoint están disponibles
- Respeta todos los permisos y políticas de SharePoint
- Sin acceso elevado ni omisión de controles de seguridad
Seguridad de tokens
- Utiliza un flujo seguro "on-behalf-of" para el intercambio de tokens
- Los tokens son de corta duración y se actualizan automáticamente
- Sin almacenamiento a largo plazo de credenciales de SharePoint
Aislamiento de alcance
- El alcance de SharePoint está limitado solo a operaciones de lectura
- Ámbito de la Graph API restringido al acceso de lectura de archivos
- No se pueden modificar ni eliminar archivos a través de LibreChat
Solución de problemas
Problemas comunes
La opción "From SharePoint" no aparece
Causa: Función no habilitada correctamente o problemas de autenticación
Soluciones:
- Verifique
ENABLE_SHAREPOINT_FILEPICKER=trueen.env - Confirma que
OPENID_REUSE_TOKENS=trueesté configurado - Comprobar que el usuario está autenticado mediante Azure Entra ID
- Reiniciar LibreChat después de realizar cambios en la configuración
El selector de archivos no se abre
Causa: Permisos faltantes o incorrectos
Soluciones:
- Verifique que los permisos de SharePoint estén concedidos en Azure
- Asegúrese de que se haya proporcionado el consentimiento del administrador
- Comprueba que
SHAREPOINT_BASE_URLcoincida exactamente con tu tenant - Confirme que
SHAREPOINT_PICKER_SHAREPOINT_SCOPEutiliza la URL completa del inquilino, comohttps://contoso.sharepoint.com/AllSites.Read - Confirmar que HTTPS esté habilitado en producción
El selector de archivos se abre en una página blanca en blanco
Causa: Azure podría estar rechazando el intercambio on-behalf-of porque el token de acceso OpenID tiene la audiencia incorrecta, o porque el intercambio de token userinfo no está habilitado.
Soluciones:
- Confirme que el registro de su aplicación Azure tiene un ámbito de API expuesto, como
api://<client-id>/access_as_user - Añada ese alcance completo a
OPENID_SCOPE - Establezca
OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true - Reinicia LibreChat e inicia sesión de nuevo para que Azure emita nuevos tokens OpenID
Las descargas fallan o se agotan el tiempo de espera
Causa: Permisos de Graph API o problemas de red
Soluciones:
- Verifique que el permiso
Files.Read.Allesté concedido - Comprobar la conectividad de red a SharePoint
- Asegúrese de que los tokens no hayan caducado (vuelva a autenticarse si es necesario)
- Revisa la consola del navegador para ver mensajes de error específicos
Modo de depuración
Para la resolución de problemas, habilite el registro de depuración (debug logging):
DEBUG_LOGGING=true
DEBUG_CONSOLE=trueEsto proporcionará registros detallados sobre:
- Procesos de intercambio de tokens
- Llamadas a la API de SharePoint y Graph
- Progreso de descarga y errores
- Flujos de autenticación
Optimización del rendimiento
Token Caching
- Los tokens se almacenan en caché para reducir la sobrecarga de autenticación
- La duración de la caché coincide con el tiempo de vida del token (típicamente 50 minutos)
- Actualización automática antes de la expiración
Descargas simultáneas
- Hasta 3 archivos se descargan simultáneamente
- Evita sobrecargar el navegador o el servidor
- Optimiza tanto para velocidad como para estabilidad
Consideraciones sobre el tamaño de archivo
- Los archivos grandes pueden tardar tiempo en descargarse
- El indicador de progreso ayuda a gestionar las expectativas del usuario
- Considere sus límites de carga de archivos en la configuración de LibreChat
Mejores prácticas
Para administradores
- Auditorías de permisos periódicas: Revise los permisos de la aplicación periódicamente
- Monitorizar el uso: Realice un seguimiento del uso de la integración de SharePoint en los registros
- Actualización de la documentación: Mantenga la documentación interna actualizada con los detalles específicos de su tenant
- Probar exhaustivamente: Verifique la funcionalidad después de cualquier cambio en Azure AD
Para usuarios finales
- Organización de archivos: Las bibliotecas de SharePoint bien organizadas mejoran la experiencia del usuario
- Tamaños de archivo: Tenga cuidado con los archivos grandes que pueden ralentizar las conversaciones
- Permisos: Asegúrese de tener acceso a los archivos antes de compartirlos
- Descargas del paciente: Permita tiempo para archivos múltiples o de gran tamaño
Configuración avanzada
Alcances personalizados
Para organizaciones con requisitos específicos, puede personalizar los scopes:
# Example: Limiting to specific site collections
SHAREPOINT_PICKER_SHAREPOINT_SCOPE=https://contoso.sharepoint.com/sites/Engineering/AllSites.Read
# Example: Using more restrictive Graph permissions
SHAREPOINT_PICKER_GRAPH_SCOPE=Files.ReadIntegración con Information Barriers
Si su organización utiliza Information Barriers:
- La integración con SharePoint respeta todas las políticas de barrera
- Los usuarios solo ven el contenido al que tienen permiso de acceder
- No se requiere configuración adicional
Documentación relacionada
¿Qué te parece esta guía?