DefaultCredentials と DefaultNetworkCredentials の使用
質問
これらの資格情報オブジェクトがどのように機能するかを理解するのに苦労しています。実際、私たちが期待したように機能しない可能性があります。現在の問題についての説明は次のとおりです。
Web サービスを通じて相互に通信する必要がある 2 つのサーバーがあります。最初のもの(と呼びましょう) Server01
) には、NetworkService アカウントとして実行されている Windows サービスがあります。別のもの Server02
ReportingServices が IIS 6.0 で実行されています。Windows サービス Server01
を使用しようとしています Server02
ReportingServices レポートを生成し、電子メールで送信するための Web サービス。
そこで、これまでに試したことを紹介します。
実行時の認証情報の設定 (これは完全に問題なく動作します):
rs.Credentials = new NetworkCredentials("user", "pass", "domain");
ここで、汎用ユーザーを使用できれば問題はありませんが...私たちには許されていません。したがって、DefaultCredentials または DefaultNetworkCredentials を使用して、それを RS Webservice に渡そうとしています。
rs.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials
または:
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
どちらにしてもうまくいきません。IIS からは常に 401 Unauthorized が返されます。ここでわかっていることは、NetworkService として記録されたリソースへのアクセスを許可したい場合は、それを許可する必要があるということです。 DOMAIN\MachineName$
(http://msdn.microsoft.com/en-us/library/ms998320.aspx):
リモート SQL サーバーへのアクセスの許可
同じドメイン (または信頼されたドメイン) 内の別のサーバー上のデータベースにアクセスしている場合は、ネットワーク サービス アカウントのネットワーク資格情報を使用してデータベースに対する認証が行われます。Network Service アカウントの資格情報の形式は DomainName\AspNetServer$ です。DomainName は ASP.NET サーバーのドメイン、AspNetServer は Web サーバー名です。
たとえば、ASP.NET アプリケーションが CONTOSO ドメイン内の SVR1 という名前のサーバーで実行されている場合、SQL Server は CONTOSO\SVR1$ からのデータベース アクセス要求を認識します。
IIS と同じ方法でアクセス権を付与すれば機能すると考えました。しかし、そうではありません。または、少なくとも、正しく認証するために何かが適切に設定されていません。
そこで、いくつか質問があります。
「ユーザーの偽装」についてどこかで読みましたが、これをどこかで設定する必要がありますか? Windowsサービス ?
NetworkService 組み込みアカウントへのアクセスをリモート IIS サーバーに許可することはできますか?
読んでくれてありがとう!
解決
あなたは、この非常に古い記事に含まれている必要があるすべての詳細については、
http://msdn.microsoft.com/en-us/library /ms998351.aspxする
あなたはそれが混乱し、このような問題をトラブルシューティングするために見つけたとき、要するに、あなたが最初に慎重にASP.NETの偽装の背後にある技術的な詳細を確認する必要があります。
他のヒント
ここでは、チェックアウトすることができ、いくつかのものがあります: - 報告サービスのSPN(サービスプリンシパル名)を設定します。あなたはグーグルでは良い例を見つけることができます。 - 許可の委任(ClientCredentials.Windows.AllowImpersonationLevel)
はIISへの認証に失敗し、またはSSRSへの認証に失敗している問題ですか? DOMAIN \ MachineNameに$アカウントを使用して、自動化しようとしているレポートを実行するためにSSRSに権限を付与する必要がある場合があります。
SSRSは、通常は正しく設定IISを得るためのかなり良い仕事をしていませんので、あなたはそれらの設定で混乱する必要はありません。私は(SSRS 2005で、物事はSSRS 2000年に異なっ働いていることと、あなたが実行しているどのバージョン言いませんでした)私のインストールをダブルチェック、Windows認証を使用するように設定だと偽装が有効になっています。これは、IISは、基本的には(つまり、ユーザーが問題のレポートを実行する権限を持っているかどうかを判断する)認可いない、(正しいユーザ名/パスワードを検証)資格情報を認証しなければならないことを意味します。 IISは、レポートを表示する権限を持っているアカウントかを決定するための独自の設定がありSSRS、上への資格情報を渡します。
あなたのスケジュールはかなり基本的である場合は、すべてのWindowsサービスを必要としないかもしれないので、また、あなたは、SSRSに直接スケジュールに基づいてレポートを送信する自動化することができます(つまり、毎日、毎週、など。)。