web-services - 使用 Reporting Services Web 服务,如何获得特定用户的权限?

标签 web-services reporting-services permissions

使用 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/

相关文章:

java - JAXB:JAXB 的问题

web-services - 将外部目录映射到 web.xml

permissions - queryPermissionsByGroup 在 android Q 上返回 null

java - 带有路径注释的简单 REST 服务 - 404 错误

reporting-services - SSRS : Format (indentation) new lines in a textbox using expression

sql - MSSQL 2008 : Problems with the 'Case' - statement

c# - 是否有可能以及如何从 SQL Server 中的本地报告服务针对在线动态 CRM 数据源运行 SSRS 报告?

php - Laravel 5.2 Storage::makeDirectory($dir) 没有创建目录

google-cloud-platform - Google Storage Bucket 允许查看对象但不能列出

java - Web服务生命周期