Cómo solucionar “An error occurred when invoking the authorization extension” en SSRS

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.

Índice

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 primer NullReferenceException.
  • 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 carpeta bin.
  • 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:

  1. Recompilar la DLL con las referencias de la versión instalada (2019/2022).
  2. Copiar la DLL firmada en <RS Install>\ReportServer\bin o instalarla en GAC (gacutil /i).
  3. 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:

  1. Ejecuta en SSMS el procedimiento:
EXEC dbo.ResetAllSecurityToBuiltinAdminRole;
  1. Accede al portal; deberías ver nuevamente los botones.
  2. 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:

  1. Descarga el último paquete acumulativo (CU) de tu edición (2019 o 2022).
  2. 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

PasoAcciónObjetivo
1Copia de seguridad de ReportServer y ReportServerTempDBEvitar pérdida de datos
2Revertir permisos mediante dbo.ResetAllSecurityToBuiltinAdminRole o rsutil /restoreRestablecer acceso básico
3Verificar funcionamiento del portalConfirmar que la UI carga correctamente
4Aplicar permisos granulares en bloques pequeñosDetectar de inmediato un cambio que rompa la seguridad

Estrategia de pruebas después de la corrección

  1. Crea una carpeta de ensayo y hereda permisos del sitio.
  2. Prueba la subida, visualización y borrado de informes con una cuenta estándar.
  3. Comprueba la barra de menús en navegadores modernos (Edge/Chrome) y legacy (IE 11 si aplica).
  4. 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:

  1. Revisa RSReportServer.config y la extensión de seguridad.
  2. Comprueba PolicyID huérfanos; ejecuta ResetAllSecurityToBuiltinAdminRole si es necesario.
  3. Asegura que el servicio SSRS sigue teniendo permisos sobre la carpeta raíz.
  4. Instala el último parche acumulativo de SSRS.
  5. Reinicia servicios y limpia la caché del navegador.

Con estas acciones, el portal suele volver a la normalidad en menos de 15 minutos.

Índice