使用 SQL Server Reporting Services Web Service
,如何确定特定域用户对特定报告的权限?有问题的用户不是访问 Web 服务的用户。
我正在使用在 MYDOMAIN\SSRSAdmin
中具有完全权限的域服务帐户(比如 SSRS
)访问 Web 服务。我想以编程方式找到特定报告的域用户(比如 MYDOMAIN\JimBob
)的权限。
Web 服务上的 GetPermissions()
方法将返回 当前用户 拥有的权限列表( MYDOMAIN\SSRSAdmin
),但这不是我想要的。如何获得 MYDOMAIN\JimBob
的相同权限列表?我没有用户的域密码,因此不能使用他们的凭据调用 GetPermissions()
方法。然而,我是从一个具有完全权限的帐户访问它,所以我认为理论上应该可以使用这些信息。
最佳答案
SSRS 从用户的 NT 登录 token 中获取 NT 组。这就是为什么当您被添加到新组时,您需要注销并重新登录。这同样适用于大多数 Windows 检查(SQL Server、共享、NTFS 等)。
如果您知道 NT 组...
您可以直接查询 ReportServer 数据库。我几乎直接从我们用来检查文件夹安全性 (C.Type = 1) 的一份报告中提到了这一点。过滤 U.UserName。
SELECT
R.RoleName,
U.UserName,
C.Path
FROM
ReportServer.dbo.Catalog C WITH (NOLOCK) --Parent
JOIN
ReportServer.dbo.Policies P WITH (NOLOCK) ON C.PolicyID = P.PolicyID
JOIN
ReportServer.dbo.PolicyUserRole PUR WITH (NOLOCK) ON P.PolicyID = PUR.PolicyID
JOIN
ReportServer.dbo.Users U WITH (NOLOCK) ON PUR.UserID = U.UserID
JOIN
ReportServer.dbo.Roles R WITH (NOLOCK) ON PUR.RoleID = R.RoleID
WHERE
C.Type = 1
关于web-services - 使用 Reporting Services Web 服务,如何获得特定用户的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/940304/