28

これらの資格情報オブジェクトの仕組みを理解するのは苦労しています。実際に、彼らは我々が彼らが働くことを期待した仕方で働かないかもしれません。現在の問題の説明は次のとおりです。DefaultCredentialsとDefaultNetworkCredentialsを使用する

私たちには2つのサーバがあり、それらはWebサービスを通じて互いに話し合う必要があります。最初のもの(Server01と呼ぶ)には、NetworkServiceアカウントとして実行されているWindowsサービスがあります。もう1つはServer02に、IIS 6.0でReportingServicesを実行しています。 Server01のWindowsサービスでは、Server02 ReportingServices WebServiceを使用してレポートを生成し、電子メールで送信しようとしています。

これまでに試したことがあります。実行時に認証情報の設定

これはを完全に正常に動作します):今すぐ

rs.Credentials = new NetworkCredentials("user", "pass", "domain"); 

、我々は一般的なユーザーを使用することができれば、すべてが、大丈夫だと思うが...我々はに許可されていません。そこで、我々はDefaultCredetialsまたはDefaultNetworkCredentialsを使用し、RSのWebサービスに渡ししようとしている。

rs.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials 

または:

rs.Credentials = System.Net.CredentialCache.DefaultCredentials 

いずれかの方法では動作しません。私たちは常にIISから401 Unauthrorizedを取得しています。今、私たちが知っていることは、我々は、リソースへのアクセス権を与えたい場合はNetworkServiceとしてログインし、我々はDOMAIN\MachineName$http://msdn.microsoft.com/en-us/library/ms998320.aspx)にそれを付与する必要があるということです。

リモートSQL Serverの

へのアクセスを許可します場合は同じドメイン(または信頼されるドメイン)内の別のサーバー上のデータベースにアクセスしている場合、ネットワークサービスアカウントのネットワーク資格情報がデータベースの認証に使用されます。ネットワークサービスアカウントの資格情報は、DomainName \ AspNetServer $という形式です.DomainNameはASP.NETサーバーのドメインで、AspNetServerはWebサーバー名です。

たとえば、ASP.NETアプリケーションがドメインCONTOSOのSVR1というサーバー上で実行されている場合、SQL ServerはCONTOSO \ SVR1 $からのデータベースアクセス要求を認識します。

IISと同じ方法でアクセスを許可すると機能すると仮定しました。しかし、それはしません。少なくとも、何かが正しく認証されるように正しく設定されていない。

ので、ここでいくつかの質問があります:

  1. 私たちは「偽装ユーザー」について読んだどこかに、私たちはWindowsサービスでこのどこかに設定する必要がありますか?

  2. NetworkServiceビルトインアカウントへのアクセスをリモートIISサーバーに許可することはできますか?

ありがとうございました!

答えて

8

あなたが必要なすべての詳細は、この非常に古い記事に含まれており、要するに

http://msdn.microsoft.com/en-us/library/ms998351.aspx

、あなたはそれが混乱し、このような問題をトラブルシューティングするために見つけたとき、あなたは最初のASP.NETの背後にある技術的な詳細を確認する必要があります偽装。

+0

優秀なリンク:D – omglolbah

+1

MSDNに2時間読んでいる記事にリンクを張るのではなく、(可能であれば)簡単な質問に実際の回答を書くのがいいでしょう。それ: –

+0

@ d.popovそれは本当に私にとってコアのものを要約するための挑戦です。あなたが興味を持っているなら、自分で試すことができます。質問への実際の答えは、その記事よりも短くはないと言わなければならない。 –

0

チェックアウトできるものは次のとおりです。 - レポートサービスのSPN(サービスプリンシパル名)を設定します。あなたはGoogleで良い例を見つけることができます。 - 委任を許可する(ClientCredentials.Windows.AllowImpersonationLevel)

0

IISに対して認証に失敗しているか、またはSSRSに対して認証に失敗しているという問題はありますか。 DOMAIN \ MachineName $アカウントには、自動化しようとしているレポートを実行するためのSSRSのアクセス許可が必要な場合があります。

SSRSは通常、IISを正しく設定することができます。そのため、これらの設定を混乱させる必要はありません。私は自分のインストールを確認しました(これはSSRS 2005です.SSRS 2000では動作が異なるかもしれませんし、実行しているバージョンがわからない)、Windows認証を使用するように設定されており、なりすましが有効になっています。これは、IISが基本的にあなたの資格情報を認証する(正しいユーザー名とパスワードを検証する)こと、許可しないこと(そのユーザーが問題のレポートを実行する権限を持っているかどうかを判断すること)を意味します。 IISは、SSRSに資格情報を渡します。SSRSには、レポートを表示する権限を持つアカウントを特定するための独自の設定があります。

また、SSRSで直接スケジュールに基づいてレポートを送信することを自動化することができます。スケジューリングが非常に基本的(日別、週別など)の場合、Windowsサービスはまったく必要ありません。

関連する問題