これらの資格情報オブジェクトの仕組みを理解するのは苦労しています。実際に、彼らは我々が彼らが働くことを期待した仕方で働かないかもしれません。現在の問題の説明は次のとおりです。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と同じ方法でアクセスを許可すると機能すると仮定しました。しかし、それはしません。少なくとも、何かが正しく認証されるように正しく設定されていない。
ので、ここでいくつかの質問があります:
私たちは「偽装ユーザー」について読んだどこかに、私たちはWindowsサービスでこのどこかに設定する必要がありますか?
NetworkServiceビルトインアカウントへのアクセスをリモートIISサーバーに許可することはできますか?
ありがとうございました!
優秀なリンク:D – omglolbah
MSDNに2時間読んでいる記事にリンクを張るのではなく、(可能であれば)簡単な質問に実際の回答を書くのがいいでしょう。それ: –
@ d.popovそれは本当に私にとってコアのものを要約するための挑戦です。あなたが興味を持っているなら、自分で試すことができます。質問への実際の答えは、その記事よりも短くはないと言わなければならない。 –