3

なりすましと委任に関するドキュメントを理解しようと少し気が狂いそうですが、私のWebサービスがどのアカウントで実行されているのかという質問が出てきました。

JOHNXPという開発ワークステーションにmyDomainName\johnaとして記録されています。Vstudio2005から、デバッグを介してWebサービスを開始すると、ブラウザーにwsdlページが表示されます。

タスクマネージャーから、.asmxコードのブレークポイントに座っているときに次のように表示されます。

aspnet_wp.exe pid = 1316 UserName = ASPNET devenv.exe pid = 3304 UserName = johna

ws.asmxコードをホストする仮想ディレクトリの[IISディレクトリセキュリティ]タブで、[匿名アクセスを有効にする]がオフになっており、[統合Windows認証]がオンになっています。

それで、MSDNの人々が「サーバープロセスを実行するユーザーアカウントを構成する必要がある」と言ったとき、上記の私の小さなWebサービスの場合、彼らは何を参照しますか?

私は引用しています:http: //msdn.microsoft.com/en-us/library/aa302400.aspx

最終的に、私のこのWebサービスは、認証されたドメインユーザーが閲覧して、私のWebサービスを呼び出すために偽装することを望んでいます。私のWebサービスは、別のサーバー(ただし同じドメイン)で別のASMXWebサービスを使用します。偽装されたドメインユーザーの資格情報(JOHNXP上の私のWebサービスの資格情報ではない)を使用するには、このリモートWebサービスが必要です。

そのため、これを理解するのが少し厄介になり、Webサービスが使用しているアカウントについて不明な点があります。WinXP上のIIS5.1のASPNETだと思いますが、よくわかりません。

4

2 に答える 2

3

既定では、ASP.NET上で実行されているアプリケーション(ASMX Webサービスを含む)は、ホストマシンに対する特権が制限されているASP.NETマシンアカウント(ASPNET)セキュリティコンテキストで実行されます。

この動作は、偽装を有効にすることで変更できます。これにより、ASP.NETアプリケーションは、認証されたユーザーまたは特定のユーザーアカウントのセキュリティコンテキストで実行されます。Web.configファイルで偽装が有効になっています。

<system.web>
  <!-- ASP.NET runs as the authenticated user -->
  <identity impersonate="true" />
</system.web>

<system.web>
  <!-- ASP.NET runs as the specified user -->
  <identity impersonate="true"
            username="DOMAIN\user"
            password="password" />
</system.web>

IISで統合Windows認証が有効になっていて、匿名インターネットユーザーアカウントが無効になっている場合、認証されたユーザーは、HTTP要求を行うクライアントのWindowsIDになります。
偽装をオンにすると、要求を処理するときにASP.NETワーカープロセスによって同じIDが使用されます。

于 2009-04-23T21:02:25.700 に答える
3

ちなみに、答えに加えて、上記は実際には次のようになります。

<system.web>
  <!-- ASP.NET runs as the specified user -->
  <identity impersonate="true"
            userName="DOMAIN\user"
            password="password" />
</system.web>

ユーザー名には大文字のN->userNameが必要です

お役に立てれば

于 2009-11-19T16:15:53.297 に答える