从PHP调用SQL Server Reporting Services-身份验证问题

从PHP调用SQL Server Reporting Services-身份验证问题,php,sql-server,reporting-services,Php,Sql Server,Reporting Services,我们需要在具有服务器端php和php身份验证的网站中使用SQL Server Reporting Services。目前,我们有两个独立的登录/身份验证–php和SQL Server Reporting Services(我相信它使用类似于ASP.NET身份验证的东西)。我们只需要有php登录,我们还需要安全的报告(即报告不能向匿名用户开放) 我们的一些报告只在一天中的固定时间更改,因此我们可以通过编程生成PDF,将它们存储在数据库或其他地方,并在用户发出请求时让php检索它们。这很简单 问题出

我们需要在具有服务器端php和php身份验证的网站中使用SQL Server Reporting Services。目前,我们有两个独立的登录/身份验证–php和SQL Server Reporting Services(我相信它使用类似于ASP.NET身份验证的东西)。我们只需要有php登录,我们还需要安全的报告(即报告不能向匿名用户开放)

我们的一些报告只在一天中的固定时间更改,因此我们可以通过编程生成PDF,将它们存储在数据库或其他地方,并在用户发出请求时让php检索它们。这很简单

问题出现在一个随时都在变化的报表上,因此每当用户提出请求时,我们都需要从数据库动态生成pdf。这将需要php直接调用reporting services(目前我们在网页中嵌入了reporting services链接,用户单击此链接,然后必须输入辅助reporting services/windows类型登录)

为了解决这个问题,我想我们可以将对reporting services的调用封装在一个可执行文件中,让php调用该可执行文件,然后它会输出一个pdf,php会将其传递回用户。我们甚至可以将reporting services包装成CGI,该CGI只能从托管php的Web服务器访问。以前有人试过这样的吗?这样行吗?它是否只需要PHP身份验证,仍然是安全的


Reporting Services可以是2005年或2008年。

我有一个类似的情况,现在我只需将第二个Reporting Services密码分发给需要它的人即可。在我的例子中,我的web应用程序根据我们的Novell LDAP数据进行身份验证,但似乎没有办法将其传递到reporting services框。我还没有开始讨论它,但我的想法是在单击报表生成按钮时创建一个guid或随机字符串,将其存储在表中,将其添加到报表请求(querystring或post),然后在驱动报表的存储过程中放入一个条件,这样,如果该字符串在表中不存在,就不会返回任何数据。可以定期删除字符串。有点像rube goldberg,但可能比您提到的可执行文件wrap更简单,这是我所能想到的最好的方法,不必尝试为reporting services构建自己的ldap提供程序,在这种情况下,用户仍然需要进行第二次登录

谢谢你的回答。因此,您是否会将Reporting Services设置为允许匿名访问(即根本不允许第二次登录,每个人都可以进入),并且GUID将充当安全密钥?这是一个有趣的想法。我想密钥需要传递给客户端吗?如果是这样的话,这还会导致安全漏洞吗?还是会很好?我们需要允许匿名访问。我不会说我真的想清楚了。我想,对于一个包含在此基础上运行的报告的文件夹,可以这样做,允许其他文件夹使用更严格的权限,例如,如果您想将完整的报告管理器权限授予超级用户。