これらの資格情報オブジェクトがどのように機能するかを理解するのに苦労しています。実際、彼らは私たちが期待したように機能しない可能性があります。現在の問題の説明はここにあります。
Webサービスを介して互いに通信する必要のある2台のサーバーを取得しました。最初のもの(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/に付与する必要があることがわかりました。ライブラリ/ms998320.aspx ):
リモートSQLサーバーへのアクセスの許可
同じドメイン(または信頼されたドメイン)内の別のサーバー上のデータベースにアクセスしている場合、Network Serviceアカウントのネットワーク資格情報を使用してデータベースへの認証が行われます。 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の偽装の背後にある技術的な詳細を注意深く確認する必要があります。
IISへの認証に失敗したか、SSRSへの認証に失敗したという問題ですか?自動化しようとしているレポートを実行するには、DOMAIN\MachineName $アカウントにSSRSのアクセス許可を付与する必要がある場合があります。
SSRSは通常、IISが正しく構成されているため、これらの設定を変更する必要はありません。インストールを再確認しました(これはSSRS 2005です。 SSRS 2000では別の方法であり、実行しているバージョンを指定していませんでした)、Windows認証を使用するように設定され、偽装が有効になっています。つまり、IISは基本的に資格情報を認証するだけです正しいユーザー名/パスワードを検証する)、承認しない(そのユーザーに問題のレポートを実行する権限があるかどうかを判断する)IIS次に、資格情報をSSRSに渡します。SSRSには、決定するための独自の設定がありますレポートを表示する権限を持つアカウント。
また、SSRSでレポートの送信を定期的に直接自動化できるため、スケジュールがかなり基本的なもの(つまり、毎日、毎週など)であれば、Windowsサービスはまったく必要ない場合があります。
チェックアウトできるものをいくつか示します。-レポートサービスのSPN(サービスプリンシパル名)を設定します。あなたはグーグルで良い例を見つけることができます。 -委任を許可する(ClientCredentials.Windows.AllowImpersonationLevel)