2012-10-04 140 views
5

我在使用SSRS時遇到了一些問題。我有一個使用Windows身份驗證的ASP.NET網站。這工作正常,我知道網站當前用戶是當前登錄的用戶。使用SSRS ASP.NET ReportViewer和Web服務進行Windows身份驗證

本網站是一個webforms ReportViewer。這在我沒有設置憑據時正常工作。但是,在SQL Server中查看報告的執行日誌時,用戶名被列爲DOMAIN \ MACHINE。

我已經試過ReportServerCredentials屬性設置爲類似下面的類:

[Serializable] 
public class ReportCredentials : IReportServerCredentials 
{ 

    public bool GetFormsCredentials(out Cookie authCookie, out string userName, out string password, out string authority) 
{ 
    authCookie = null; 
    userName = null; 
    password = null; 
    authority = null; 

    return false; 
} 

public WindowsIdentity ImpersonationUser 
{ 
    get { 
     return (WindowsIdentity)HttpContext.Current.User.Identity; 
    } 
} 

public ICredentials NetworkCredentials 
{ 
    get { 
     return null; 
    } 
} 

}

然而,當這個代碼執行我現在從Web服務和報告得到了401回服務。

發生了什麼事?他們都在同一個域。我想使用當前用戶而不是當前機器。如果我在報告服務器上運行報告,它會在正確的用戶名下列出,而不是來自我的網站。

回答

0

而不是

return (WindowsIdentity)HttpContext.Current.User.Identity; 

你可以嘗試

return WindowsIdentity.GetCurrent(); 
+0

葉我想,第一,但仍然有401 :( – Lloyd

+0

其實我說了謊,一定已經被緩存,該報告目前運行,但用戶名被記錄爲\t STAFF \ UKBRISDDWRKA424 $這是機器。哎呀。 – Lloyd

4

我在這裏有自己的煩惱,但最終是成功的。

機1:客戶端瀏覽器

機2:Web服務器

機3:SSRS + SQL服務器

爲了解決雙跳我對Active Directory的代表團IT部門轉了機器2,設置爲「信任此計算機以委派任何服務(僅Kerberos)」。

在我的web服務器我修改了Web.config文件有:

<authentication mode="Windows"/> 
<identity impersonate="true"/> 

在我修改RSReportServer.config文件中的SSRS服務器,添加<RSWindowsNegotiate/><AuthenticationTypes>部分。我相信默認是<RSWindowsNTLM/>。我剛剛離開都在那裏,讓我:

我重新啓動SSRS服務器和所有開始工作。

希望這可以幫助別人!

相關問題