2012-10-04 20 views
5

現在、SSRSを使用しているいくつかの問題があります。 Windows認証を使用するASP.NET Webサイトがあります。それはうまく動作し、私は現在のユーザーが現在ログオンしているWebサイトを知っています。SSRSを使用したWindows認証ASP.NET ReportViewerとWebサービス

このサイトには、webforms ReportViewerがあります。資格情報を設定しないとうまく動作します。 SQL Serverのレポートの実行ログを見ると、UsernameはDOMAIN \ MACHINEとして表示されます。

私は以下のようなクラスにReportServerCredentialsプロパティを設定しようとしました:このコードは、私が今、Webサービスおよびレポートから戻って401を取得する実行

[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サイトからは表示されません。私はここで自分の悩みを持つが、最終的に成功したた

return WindowsIdentity.GetCurrent(); 

答えて

0

代わり

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

のあなたは試みることができます。

マシン1:クライアントブラウザ

マシン2:ウェブサーバ

マシン3:SSRS + SQL Serverの

は、私がMACHINE2のためのActive Directoryの委任のIT部門のターンを持っていたダブルホップを解決するために、 [すべてのサービスに委任するためにこのコンピュータを信頼する(Kerberosのみ)]に設定します。私のウェブサーバ上で

は私が持っているWeb.configファイルを修正:SSRSサーバーで

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

を私は<AuthenticationTypes>セクションに<RSWindowsNegotiate/>を追加し、RSReportServer.configファイルを変更しました。私はデフォルトが<RSWindowsNTLM/>と信じています。私はちょうど私を与え、そこに両方の​​左:

私はSSRSサーバーを再起動し、すべての作業を開始しました。

これが誰かを助けることを願っています!

+0

葉が、私は実際に私がキャッシュされている必要があります、嘘をつく最初が、それでも401 :( – Lloyd

+0

を得たことを試してみました。報告書は現在実行されますが、ユーザ名はマシンです\t STAFF \ UKBRISDDWRKA424 $として記録されている。grrrが。 – Lloyd

関連する問題