首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2012年SSRS中的自定义表单身份验证

2012年SSRS中的自定义表单身份验证
EN

Stack Overflow用户
提问于 2014-02-26 17:22:32
回答 1查看 4.5K关注 0票数 4

我是SSRS新手,我被要求在SQL Server 2012上添加访问报表服务器和报表管理器的自定义身份验证

我一直在严格按照Microsoft的安全扩展示例的指示办事。我所做的唯一修改是对实际的UILogin.aspx和Login.aspx以及UserAccounts数据库进行修改,并且使用了wmi命名空间v11。该项目是以调试模式编译的(GetUserInfo修改为不包含断言和空引用异常)

我成功地添加了一个自定义登录,并在配置元素下的/ReportServer/rsreportserver.config中将其指定为管理员。该用户能够连接到Report (https:///Reports)和Report视图(https:///ReportServer),这两个视图已经配置为使用https,并且似乎可以工作。使用自定义表单身份验证的想法是,我们可以远程访问报表。

然后,我在UserAccounts数据库中注册了一个新用户,并希望该用户也能够访问报表管理器。登录到带有第一个安装用户的Report,然后转到站点设置->Security->not,并添加具有“系统管理”和“系统用户”角色的新用户(而不是域用户)。我希望这将使用户能够访问这两种登录类型。但是,尝试与新用户登录会产生错误:

报表管理器错误:

用户“”没有所需的权限。验证是否授予了足够的权限,并解决了Windows用户帐户控制(UAC)限制

报表服务器视图错误(用户名掩码):

授予用户'‘的权限不足以执行此操作。(rsAccessDenied)

我已经调试了项目的附加进程和自定义登录验证代码是成功的预期。

如果我然后修改上面提到的配置元素以使用新的用户登录名,那么它就能工作了。

这似乎不正确,我们只能为自定义身份验证设置一个用户。是否有人能够对多个自定义用户登录进行此操作?

报表服务器日志转储(报表管理器登录):

代码语言:javascript
复制
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)

报表服务器日志转储(报表视图登录-用户名屏蔽):

代码语言:javascript
复制
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.;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-26 21:50:33

找到了解决办法。

还必须设置新用户,以便通过报表管理器访问报表主文件夹中的角色。

我使用了我可以登录到报表管理器的一个用户,并通过主页->文件夹设置->Security->新角色分配,添加了具有适当角色的新用户。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22048669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档