2012-06-27 151 views
2

我試圖以編程方式以編程方式連接到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> 

回答

0

所以,如果我沒有記錯,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

希望這有助於...