1

注: 以下で説明する各手順では、同じドメイン ユーザー アカウントとしてログインしています。

リモート マシン上のサービスを ( ServiceController経由で) 制御する Web アプリケーションがあります。Web サイトにリモートで接続してサービスを制御しようとすると、InvalidOperationException: Access is denied が発生します。

WebサーバーからWebサイトに接続すると(リモートデスクトップで、ドメインユーザーとしてログインしてからWebページを開く)、期待どおりに動作するため、機能することわかっています。

Windows 認証と偽装を要求するように IIS と ASP.NET を構成しました。これが失敗したときに現在のスレッドのプリンシパルをログに記録すると、リモートで接続しているか、サーバー自体から接続しているかに関係なく、スレッドが私の ID で実行されていることがわかります。

IIS で Kerberos 認証、NTLM 認証、およびその両方を同時に使用するように強制しようとしました。私のプリンシパルがその AuthenticationType を「Negotiate」または「NTLM」として報告するかどうかは問題ではありません。(ローカルマシンから)リモートで接続すると、どれも機能しません

これに関するもう1つの奇妙な点は、ローカルマシンからデバッグしている/リモートサーバーに接続している場合、常に機能することです! しかし、私はデバッグしていません。毎回失敗します!

ここで一体何が起こっているのでしょうか?

4

2 に答える 2

1

あなたのシナリオは委任であり、なりすましではありません。委任は達成するのが難しく、正しく行われる多くのことに依存します。

開始する場所は、Kerberos認証と委任の問題のトラブルシューティングです。

David Wangブログは、さまざまな問題に関する非常に役立つリソースです。

于 2008-11-26T20:16:23.903 に答える
0

「これに関するもう1つの奇妙な点は、ローカルマシンからデバッグしている/リモートサーバーに接続している場合、常に機能することです!しかし、デバッグしているのではなく、毎回失敗します!」

これは、許可の問題があることを明確に示しています。ログオンしているユーザーとして実行しているデバッガーで実行する場合、デバッグしていない場合は、IIS が使用するように設定されているものとして実行されます (既定では NETWORK SERVICE)。ドメイン アカウントをユーザーとして使用して匿名アクセスを有効にするを (一時的に) 設定してみて、それが機能するかどうかを確認してください。存在する場合は、IIS が偽装するように適切にセットアップされていないことを意味します (おそらく NETWORK SERVICE として実行されています)。

IIS のアクセス許可は、適切に微調整するには少し難しい場合があります...頑張ってください!

P/S: これは、プログラミングよりもネットワーク管理の質問のように見えます ( https://stackoverflow.com/questions/321618/stackoverflow-is-for-programming-questions-here-are-some-better-forums-を参照)。 for-your#321756 )

于 2008-11-26T20:01:48.723 に答える