El mensaje “An error occurred when invoking the authorization extension” en SQL Server Reporting Services puede bloquear por completo el portal web e impedir que los usuarios vean, publiquen o administren informes. A continuación encontrarás una guía exhaustiva para diagnosticar y corregir el problema sin perder los permisos existentes ni comprometer la seguridad de tu entorno.
Descripción del escenario
Tras otorgar permisos granulares a un único usuario, el portal de SSRS dejó de funcionar para el resto de la organización. En pantalla aparece el mensaje genérico de error, los botones New, Upload, Publish y Manage folder desaparecen y, en los registros (ReportServerService_.log
), se acumulan excepciones System.NullReferenceException
lanzadas por Microsoft.ReportingServices.Authorization.
. Aunque la cuenta que realizó el cambio conserva acceso (suele ser administrador local), al abrir el menú contextual de un elemento vuelve a saltar la misma alerta.
Cómo reproduce SSRS la excepción
El subsistema de seguridad de SSRS lee las ACL almacenadas en la base de reportes para decidir si un usuario puede ver o modificar un recurso. Cuando el método interno SdAndType.GetRightSecDesc
intenta resolver un PolicyID
inexistente o una extensión personalizada incorrecta, el objeto de seguridad devuelto es null
y la llamada se cae con NullReferenceException
. El resultado: la interfaz no puede construir los menús y muestra el error genérico.
Rutas de diagnóstico recomendadas
Revisión inmediata de los registros
<Drive>:\Program Files\Microsoft SQL Server\Reporting Services\LogFiles
- Filtra por el texto
authorization extension
y localiza el primerNullReferenceException
. - Anota el stack trace; si aparece
CustomSecurityExtension
, focaliza el análisis en la DLL. - Confirma la hora exacta del evento para correlacionarlo con cambios de permisos.
Validación del archivo RSReportServer.config
En <RS Install>\ReportServer
:
- Busca la sección
<AuthenticationTypes>
y verifica que solo exista una entrada<Custom>
si usas autenticación personalizada. - Asegúrate de que el valor de
Class
coincide con el fully qualified name de la DLL y que la DLL está registrada en el GAC o reside en la carpetabin
. - Si SSRS se actualizó recientemente, recompila la extensión contra la nueva versión de ensamblados
Microsoft.ReportingServices.*
.
Comprobación de PolicyID
huérfanos en la base ReportServer
SELECT ItemID, Name, PolicyID
FROM ReportServer.dbo.Catalog
WHERE PolicyID NOT IN (SELECT PolicyID FROM dbo.Policy);
Si la consulta devuelve filas, significa que hay recursos sin política válida. Al acceder a uno de ellos, se dispara la excepción.
Causas más frecuentes y su corrección
Extensión de autorización personalizada dañada
Una simple divergencia de versión entre la DLL y los ensamblados de SSRS basta para romper toda la interfaz. Solución:
- Recompilar la DLL con las referencias de la versión instalada (2019/2022).
- Copiar la DLL firmada en
<RS Install>\ReportServer\bin
o instalarla en GAC (gacutil /i
). - Reiniciar el servicio «SQL Server Reporting Services».
Permisos o descriptores de seguridad corruptos
Cuando un PolicyID
no apunta a la tabla Policy
, SSRS no puede calcular las reglas efectivas. Para restaurar:
- Ejecuta en SSMS el procedimiento:
EXEC dbo.ResetAllSecurityToBuiltinAdminRole;
- Accede al portal; deberías ver nuevamente los botones.
- Vuelve a aplicar permisos selectivamente, validando después de cada cambio.
Cambio de permisos que excluye al portal de sí mismo
Si el equipo de servicio (service account) perdió acceso a la carpeta raíz, SSRS no puede cargar los íconos de acción. Una solución rápida:
- Agrega temporalmente la cuenta de servicio al grupo local Administrators.
- Reinicia el servicio SSRS.
- Restaura los permisos correctos y quita la membresía de Administrators.
Actualizaciones y parches pendientes
Las compilaciones de SSRS posteriores a enero de 2024 corrigen referencias nulas en el sistema de seguridad. Si ejecutas una versión anterior:
- Descarga el último paquete acumulativo (CU) de tu edición (2019 o 2022).
- Instálalo fuera de horarios pico y reinicia SSRS.
Servicios y cachés sin reiniciar
Cualquier cambio en RSReportServer.config
requiere reinicio; asimismo, el navegador del usuario puede conservar scripts obsoletos. Recuerda:
- Detener y arrancar de nuevo el servicio desde
services.msc
o PowerShell:Restart-Service -Name SQLServerReportingServices
. - Vaciar caché y cookies o abrir una sesión privada.
Procedimiento mínimo de recuperación sin perder informes
Paso | Acción | Objetivo |
---|---|---|
1 | Copia de seguridad de ReportServer y ReportServerTempDB | Evitar pérdida de datos |
2 | Revertir permisos mediante dbo.ResetAllSecurityToBuiltinAdminRole o rsutil /restore | Restablecer acceso básico |
3 | Verificar funcionamiento del portal | Confirmar que la UI carga correctamente |
4 | Aplicar permisos granulares en bloques pequeños | Detectar de inmediato un cambio que rompa la seguridad |
Estrategia de pruebas después de la corrección
- Crea una carpeta de ensayo y hereda permisos del sitio.
- Prueba la subida, visualización y borrado de informes con una cuenta estándar.
- Comprueba la barra de menús en navegadores modernos (Edge/Chrome) y legacy (IE 11 si aplica).
- Registra cada paso en un documento de cambio para futuras auditorías.
Buenas prácticas para prevenir el error
- Mantén un snapshot de la base ReportServer antes de modificaciones de seguridad.
- Utiliza equipos de servicio dedicados con contraseña administrada por AD.
- Documenta y firma las extensiones de autorización; aplica versionado semántico.
- Programa una tarea que valide de forma nocturna los
PolicyID
huérfanos. - Actualiza SSRS al menos una vez por trimestre o cuando Microsoft publique parches críticos.
Preguntas frecuentes
¿Puedo corregir el problema sin intervención de la base de datos?
Sí, si el origen es una DLL corrupta basta con reemplazarla y reiniciar SSRS. Sin embargo, las políticas dañadas requieren intervención T‑SQL.
¿Restablecer la seguridad borra mis carpetas?
No. El procedimiento solo actualiza las ACL a la función interna «Administrators» y no modifica metadatos de los informes.
¿Es posible automatizar la restauración?
Con PowerShell
y el módulo ReportingServicesTools
puedes exportar e importar políticas en formato XML para aplicar rollback rápido.
Resumen rápido para administradores ocupados
Si tu portal SSRS muestra “authorization extension” y desaparecen los menús:
- Revisa
RSReportServer.config
y la extensión de seguridad. - Comprueba
PolicyID
huérfanos; ejecutaResetAllSecurityToBuiltinAdminRole
si es necesario. - Asegura que el servicio SSRS sigue teniendo permisos sobre la carpeta raíz.
- Instala el último parche acumulativo de SSRS.
- Reinicia servicios y limpia la caché del navegador.
Con estas acciones, el portal suele volver a la normalidad en menos de 15 minutos.