5

現在、SSRSの使用にいくつか問題があります。Windows認証を使用するASP.NETWebサイトがあります。これは正常に機能し、Webサイトの現在のユーザーが現在ログオンしているユーザーであることを私は知っています。

このサイトには、Webフォームの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が返されます。

どうしたの?それらは両方とも同じドメインにあります。現在のマシンではなく、現在のユーザーを使用したい。レポートサーバーでレポートを実行すると、Webサイトからではなく、正しいユーザー名でレポートが表示されます。

4

2 に答える 2

4

ここで私自身の問題を抱えていましたが、最終的には成功しました。

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

マシン 2: ウェブサーバー

マシン 3: SSRS + SQL Server

ダブル ホップを解決するために、IT 部門に Machine2 の Active Directory 委任を有効にしてもらい、「このコンピューターをすべてのサービスへの委任に対して信頼する (Kerberos のみ)」に設定しました。

私のWebサーバーで、Web.configファイルを次のように変更しました。

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

SSRS サーバーで、rsreportserver.config ファイルを変更<RSWindowsNegotiate/>し、セクションに追加しました<AuthenticationTypes>。デフォルトは だと思います<RSWindowsNTLM/>。私はちょうどそこに両方を残して、私に与えました:

SSRS サーバーを再起動すると、すべてが機能し始めました。

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

于 2013-03-20T22:25:24.127 に答える
0

それ以外の

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

あなたは試すことができます

return WindowsIdentity.GetCurrent();
于 2012-10-04T16:01:38.623 に答える