Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用SSRS和BIDS自定义安全扩展访问用户角色/权限?_C#_.net_Reporting Services_Forms Authentication_Bids - Fatal编程技术网

C# 如何使用SSRS和BIDS自定义安全扩展访问用户角色/权限?

C# 如何使用SSRS和BIDS自定义安全扩展访问用户角色/权限?,c#,.net,reporting-services,forms-authentication,bids,C#,.net,Reporting Services,Forms Authentication,Bids,我已经为SSRS2008R2编写并部署了一个定制的安全扩展,它在尝试从BIDS2008/VisualStudio中部署报告时工作得非常出色 安全扩展的体系结构通过多个权限处理登录,我通过在LogonUser()中创建用户会话,将其持久化到数据库中,然后使用cookie从服务传递的UID在RS web服务的客户端代理类中加载会话来管理这一点,然后重写身份验证票证,以包含当前用户的会话UID和用户角色。然后,可以在自定义授权扩展中使用这些值来管理用户对SSRS操作和对象的权限 我遇到的问题是,在部署

我已经为SSRS2008R2编写并部署了一个定制的安全扩展,它在尝试从BIDS2008/VisualStudio中部署报告时工作得非常出色

安全扩展的体系结构通过多个权限处理登录,我通过在LogonUser()中创建用户会话,将其持久化到数据库中,然后使用cookie从服务传递的UID在RS web服务的客户端代理类中加载会话来管理这一点,然后重写身份验证票证,以包含当前用户的会话UID和用户角色。然后,可以在自定义授权扩展中使用这些值来管理用户对SSRS操作和对象的权限

我遇到的问题是,在部署来自BIDS的报告时,它不起作用。Its直接访问服务,因此不需要服务代理类。我已尝试在HTTP上下文上处理身份验证后事件,但遗憾的是,RS服务没有持久化会话cookie,因此我无法访问会话值

那么我错过了什么?是否有另一种控制用户角色和权限的方法不需要在任何地方硬编码用户名?正如我所说,可以使用多个权限进行登录,因此仅通过用户名管理权限是不可能的(想到这一点,我就感到畏缩)

我想到的一个可能的解决方案是为投标编写一个扩展或插件,基本上充当web服务的代理,这将允许我对登录过程进行更多的控制,但我不知道这是否可行(谷歌没有帮助…)


任何帮助都将被感激地接受

您正在使用IAAuthenticationExtension接口吗?下面的链接提供了一个访问控制的良好示例(如果您需要的话)。


我可以想象,可以在这里跟踪nt用户名,然后对active directory组等进行查找。我在这里看到的主要难题是在ssrs策略配置中启用正确的信任策略。

我放弃了寻找优雅的解决方案,所以我走上了阻力最小的道路,并遵循了我的建议gather是SSRS关于拥有“主”帐户的指导原则,我将指定该帐户用于报表部署和订阅。这个帐户将需要硬编码或从设置文件拉我不知道是否有任何其他方式。干杯


更新:我走了这条路,效果很好。如果用户通过web前端登录,他们可以在那里部署报表,但是如果他们想从开发环境(BIDS)部署报表,则需要在登录对话框显示时使用主帐户登录。我已将部署帐户仅限于此特定用途

感谢您的回答,但正如我前面提到的,我使用多个权限的表单身份验证来获取登录凭据,因此不可能仅使用用户名跟踪权限(例如,每个权限中可能有不同的用户使用相同的用户名)。我绝对不会使用匿名访问。听起来是个可行的选择。另一个方向是使用其他工具进行报表部署。我们只在初始报表服务器部署时使用BIDS部署,而这只占一半的时间。RSS()可能也有同样的身份验证问题,但通过IE部署并不是世界上最糟糕的事情…@JamieF谢谢你的评论,是的,我曾考虑过通过web前端部署,但在我看来,这只会使报表开发人员的事情复杂化。当订阅运行时(即无法正确加载用户详细信息),也会出现同样的问题,因此主帐户将是一种两全其美的方法。但我对此并不特别满意。你有没有得到任何完整源代码的解决方案?