以编程方式登录到SSRS

问题描述:

我试图以编程方式以编程方式连接到Microsoft SSRS。我会假设这将不得不使用www-authentication http头以某种方式完成,但是我并不确定。以编程方式登录到SSRS

我这样做是因为我在作为匿名Web用户登录到SSRS时遇到问题。不应提示客户输入用户名和密码。

假设我在正确的路径上,一旦登录,PHP应该充当SSRS作为客户端(用户通过PHP页面浏览SSRS)之间的中继。

如果还有其他方法可以使这个工作,请大喊!

这是多远,我已经得到了:

<?php 
    function get_url_contents($url){ 
     $crl = curl_init(); 
     $timeout = 5; 
     curl_setopt ($crl, CURLOPT_VERBOSE, 1); 
     curl_setopt ($crl, CURLOPT_URL,$url); 
     curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt ($crl, CURLOPT_HTTPHEADER,array("WWW-Authenticate: Basic")); 
     curl_setopt ($crl, CURLOPT_HEADER, 1); 
     curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout); 
     $ret = curl_exec($crl); 
     curl_close($crl); 
     return $ret; 
    } 


    $url = "http://192.168.0.16/ReportServer"; 
    $str = get_url_contents($url); 
    echo $str; 
?> 

具有输出感:

C:\wamp\bin\php\php5.3.8>php.exe c:\wamp\www\Test\index.php 
* About to connect() to 192.168.0.16 port 80 (#0) 
* Trying 192.168.0.16... * connected 
* Connected to 192.168.0.16 (192.168.0.16) port 80 (#0) 
> GET /ReportServer HTTP/1.1 
Host: 192.168.0.16 
Accept: */* 
WWW-Authenticate: Basic 

< HTTP/1.1 401 Unauthorized 
< Content-Length: 0 
< WWW-Authenticate: NTLM 
< WWW-Authenticate: Basic realm="192.168.0.16" 
< Date: Wed, 27 Jun 2012 06:31:24 GMT 
< 
* Connection #0 to host 192.168.0.16 left intact 
HTTP/1.1 401 Unauthorized 
Content-Length: 0 
WWW-Authenticate: NTLM 
WWW-Authenticate: Basic realm="192.168.0.16" 
Date: Wed, 27 Jun 2012 06:31:24 GMT 

* Closing connection #0 

C:\wamp\bin\php\php5.3.8> 

所以,如果我没有记错,SSRS “默认” 为NTLM安装时开箱。这意味着它正在寻找一个Windows AD帐户。当然,您可以根据您的使用情况将这些设置通过配置更改为无数其他设置。有关身份验证的更多信息,请查看此页面:http://msdn.microsoft.com/en-us/library/bb283249.aspx

我很久以前就开始类似于此项目。我们最终使用的最简单的解决方案是创建一个服务帐户,授予服务帐户在PHP应用程序中使用的各种SSRS报告的权限,然后在.NET端创建基本上是称为SSRS Web服务的包装Web服务服务帐户。然后我们从PHP端调用这个包装器Web服务。有关SSRS Web服务的信息,请参阅此处:http://msdn.microsoft.com/en-us/library/ms155398.aspx

希望这有助于...