2

Active Directory との間で読み取り/書き込みを行う Web アプリケーションを作成しました。私のweb.configファイルには

<identity impersonate="true"/>

<authentication mode="Windows"/>

表示すると

System.Web.HttpContext.Current.User.Identity.Name

一部のラベルでは と表示されているmydomain\myusernameので、なりすましが機能すると思います。

今質問に。IIS Web サーバーが実行されているサーバー上のアプリケーションにアクセスすると、すべてがうまく機能します。しかし、リモート PC から Web アプリケーションにアクセスすると、例外が発生します (ラベルにはまだ「mydomain\myusername」と表示されます)。

問題を追跡しました。私が呼び出すときのコードビハインド

Forest currentForest = Forest.GetCurrentForest();

変数はその、またはをcurrentForest知っていますが、 、またはを呼び出すと、currentForest.NamecurrentForest.RootDomaincurrentForest.ForestModecurrentForest.DomainscurrentForest.SitescurrentForest.GlobalCatalogs

System.DirectoryServices.ActiveDirectory.ActiveDirectoryOperationException.

今、私は道に迷っており、さらに何をデバッグすればよいかわかりません。私が使用しているアカウントは、Enterprise Admins (マルチドメイン フォレスト) のメンバーです。IIS バージョン (IIS 7.5 と IIS 6.0) が異なる 2 つのサーバーで試しましたが、うまくいきませんでした。

そして、スローされた例外はあまり役に立ちません:

例外の詳細: System.DirectoryServices.DirectoryServicesCOMException: 操作エラーが発生しました。
ソース エラー: 現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。

スタック トレース:
DirectoryServicesCOMException (0x80072020): 操作エラーが発生しました。

System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) +557
System.DirectoryServices.DirectoryEntry.Bind() +44
System.DirectoryServices.DirectoryEntry.get_AdsObject() +42
System.DirectoryServices.DirectorySearcher.FindAll(Boolean findMoreThanOne) +98
システム。 DirectoryServices.ActiveDirectory.ADSearcher.FindAll() +46
System.DirectoryServices.ActiveDirectory.Forest.GetDomains() +543

[ActiveDirectoryOperationException: 操作エラーが発生しました。]

System.DirectoryServices.ActiveDirectory.Forest.GetDomains() +512484
System.DirectoryServices.ActiveDirectory.Forest.get_Domains() +44
myWebApp.ASPpage.Button_Click(オブジェクト送信者、EventArgs e) in C:\Documents and Settings\myUser\documents\ visual studio\Projects\MyWebApp\MyWebApp\ASPPage.aspx.cs:158
System.Web.UI.WebControls.Button.OnClick(EventArgs e)
+115 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +140
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +29
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2981

編集:currentForest.Domains明らかでない場合は、UPN 名で指定されたユーザーをフォレスト全体 (すべてのドメイン) で検索するために使用したいと考えています。

4

2 に答える 2

0

これは、IIS が常に認証するため、偽装が機能することを確認する ためにSystem.Web.HttpContext.Current.User.Identity.Name表示されるためです。mydomain\myusername;System.Security.Principal.WindowsIdentity.GetCurrent().NameSystem.Security.Principal.WindowsIdentity.GetCurrent(true)

于 2014-01-15T00:19:50.147 に答える