Аутентификация пользовательских форм в SSRS 2012

Я новичок в SSRS, и меня попросили добавить пользовательскую аутентификацию для доступа к серверу отчетов и диспетчеру отчетов на SQL Server 2012

Я следовал инструкциям образца расширения безопасности Microsoft близко к зубам. Единственные изменения, которые я сделал, - это действительные UILogin.aspx и Login.aspx, а также база данных UserAccounts и это пространство имен wmi v11. Проект скомпилирован в режиме отладки (GetUserInfo изменен, чтобы не включать Assert и исключение нулевой ссылки)

Мне удалось добавить пользовательский логин и назначить его администратором в /ReportServer/rsreportserver.config в элементе конфигурации . Этот пользователь может подключаться как к диспетчеру отчетов (https: // <домен> / Reports), так и к представлению сервера отчетов (https: // <домен> / ReportServer) [настроен для использования https и, похоже, работает. Идея использовать пользовательскую форму аутентификации заключается в том, чтобы мы могли получить удаленный доступ к отчетам]

Затем я регистрирую нового пользователя в базе данных UserAccounts и хочу, чтобы пользователь также имел доступ к диспетчеру отчетов. Войдите в диспетчер отчетов с первым пользователем установки и перейдите в " Параметры сайта" -> "Безопасность" -> "Назначение новой роли" и добавьте нового пользователя (не пользователя домена) с ролями "Системное администрирование" и "Системный пользователь". Я ожидаю, что это должно дать пользователю доступ к обоим типам входа в систему. Но попытка войти с новым пользователем приводит к ошибкам:

Ошибки диспетчера отчетов с:

Пользователь "" не имеет необходимых разрешений. Убедитесь, что предоставлены достаточные разрешения и учтены ограничения контроля учетных записей Windows (UAC).

Ошибки просмотра сервера отчетов с (имя пользователя замаскировано):

Разрешения, предоставленные пользователю "<имя пользователя>", недостаточны для выполнения этой операции. (RsAccessDenied)

Я отладил проект для присоединенного процесса, и пользовательский код подтверждения входа успешно выполнен, как и ожидалось.

Если затем я изменю элемент конфигурации , упомянутый выше, чтобы использовать новый логин пользователя, тогда он будет работать.

Похоже, это не правильно, что мы можем настроить только одного пользователя для пользовательской аутентификации. Кто-нибудь был в состоянии сделать это для нескольких пользовательских логинов?


Дамп журнала сервера отчетов (вход в диспетчер отчетов):

library!ReportServer_0-26!1524!02/26/2014-11:04:24:: i INFO: Call to GetItemTypeAction(/).
library!ReportServer_0-26!1524!02/26/2014-11:04:24:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.AccessDeniedException: , Microsoft.ReportingServices.Diagnostics.Utilities.AccessDeniedException: The permissions granted to user 'enp' are insufficient for performing this operation.;
library!ReportServer_0-26!17bc!02/26/2014-11:07:28:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.AuthenticationExtensionException: , Microsoft.ReportingServices.Diagnostics.Utilities.AuthenticationExtensionException: The Authentication Extension threw an unexpected exception or returned a value that is not valid: identity==null.;
library!ReportServer_0-26!d14!02/26/2014-11:07:58:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.AuthenticationExtensionException: , Microsoft.ReportingServices.Diagnostics.Utilities.AuthenticationExtensionException: The Authentication Extension threw an unexpected exception or returned a value that is not valid: identity==null.;
library!ReportServer_0-26!1518!02/26/2014-11:08:44:: i INFO: Call to GetPermissionsAction(/).
ui!ReportManager_0-25!1524!02/26/2014-11:08:44:: e ERROR: Microsoft.ReportingServices.UI.FolderPage+InsufficientPermissionsToRoot: User '' does not have required permissions. Verify that sufficient permissions have been granted and Windows User Account Control (UAC) restrictions have been addressed.
   at Microsoft.ReportingServices.UI.FolderPage.Page_Init(Object sender, EventArgs e)
   at System.EventHandler.Invoke(Object sender, EventArgs e)
   at System.Web.UI.Control.OnInit(EventArgs e)
   at System.Web.UI.Page.OnInit(EventArgs e)
   at System.Web.UI.Control.InitRecursive(Control namingContainer)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
library!ReportServer_0-26!6c0!02/26/2014-11:08:44:: i INFO: Call to GetSystemPermissionsAction().
ui!ReportManager_0-25!1524!02/26/2014-11:08:44:: e ERROR: HTTP status code --> 500
-------Details--------
Microsoft.ReportingServices.UI.FolderPage+InsufficientPermissionsToRoot: User '' does not have required permissions. Verify that sufficient permissions have been granted and Windows User Account Control (UAC) restrictions have been addressed.

   at Microsoft.ReportingServices.UI.FolderPage.Page_Init(Object sender, EventArgs e)

   at System.EventHandler.Invoke(Object sender, EventArgs e)

   at System.Web.UI.Control.OnInit(EventArgs e)

   at System.Web.UI.Page.OnInit(EventArgs e)

   at System.Web.UI.Control.InitRecursive(Control namingContainer)

   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
library!ReportServer_0-26!6e0!02/26/2014-11:08:44:: i INFO: Call to GetSystemPropertiesAction().
ui!ReportManager_0-25!1524!02/26/2014-11:08:44:: e ERROR: System.Threading.ThreadAbortException: Thread was being aborted.
   at System.Threading.Thread.AbortInternal()
   at System.Threading.Thread.Abort(Object stateInfo)
   at System.Web.HttpResponse.End()
   at Microsoft.ReportingServices.UI.ReportingPage.ShowErrorPage(String errMsg)

Дамп журнала сервера отчетов (логин просмотра отчета - имя пользователя замаскировано):

library!ReportServer_0-26!117c!02/26/2014-10:56:08:: i INFO: Call to GetItemTypeAction(/).
library!ReportServer_0-26!117c!02/26/2014-10:56:08:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.AccessDeniedException: , Microsoft.ReportingServices.Diagnostics.Utilities.AccessDeniedException: The permissions granted to user '<user name>' are insufficient for performing this operation.;

1 ответ

Решение

Нашел решение.

Новым пользователям также необходимо настроить доступ к роли в домашней папке отчетов через диспетчер отчетов.

Я использовал одного пользователя, которого мог войти в диспетчер отчетов, и прошел через Home->Folder Settings->Security->New Role Assignment и добавил новых пользователей с соответствующими ролями.

Другие вопросы по тегам