29

これらの資格情報オブジェクトがどのように機能するかを理解するのに苦労しています。実際、期待どおりに動作しない可能性があります。今回の問題の解説です。

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

というわけで、これまでに試したことは次のとおりです。

実行時に資格情報を設定します (これは完全に正常に動作します):

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

ここで、汎用ユーザーを使用できれば問題ありませんが、許可されていません。そのため、DefaultCredentials または DefaultNetworkCredentials を使用して RS Web サービスに渡します。

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 Server へのアクセス権の付与

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

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

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

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

  1. 「Impersonating Users」についてどこかで読みましたが、これをWindows Serviceのどこかに設定する必要がありますか?

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

読んでくれてありがとう!

4

3 に答える 3

4

必要なすべての詳細は、この非常に古い記事に含まれています

つまり、このような問題のトラブルシューティングがわかりにくい場合は、まず ASP.NET の偽装の背後にある技術的な詳細を注意深く確認する必要があります。

于 2010-04-11T10:22:41.517 に答える
0

確認できることは次のとおりです。 - レポート サービスの SPN (サービス プリンシパル名) を設定します。グーグルで良い例を見つけることができます。- 委任を許可する (ClientCredentials.Windows.AllowImpersonationLevel)

于 2010-03-31T18:33:15.460 に答える
0

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

通常、SSRS は IIS を正しく構成するのに非常に優れているため、これらの設定をいじる必要はありません。インストールを再確認しました (これは SSRS 2005 です。SSRS 2000 では動作が異なる可能性があり、実行しているバージョンはわかりませんでした)。Windows 認証を使用するように設定され、偽装が有効になっています。つまり、IIS は基本的に資格情報を認証する (正しいユーザー名/パスワードを検証する) だけであり、承認 (そのユーザーが問題のレポートを実行する権限を持っているかどうかを判断する) ではありません。次に、IIS は資格情報を SSRS に渡します。SSRS には、レポートを表示する権限を持つアカウントを決定するための独自の設定があります。

また、SSRS でスケジュールに基づいてレポートを直接送信することも自動化できるため、スケジュールがかなり基本的なもの (つまり、毎日、毎週など) であれば、Windows サービスはまったく必要ないかもしれません。

于 2010-04-06T16:23:08.583 に答える