質問者
DirectorySearcher で Active Directory 情報を取得できない

質問
-
System.DirectoryServices 名前空間の DirectorySearcher、DirectoryEntry を使用し、Active Directory に、指定したユーザー/パスワードのユーザーが存在するか確認したいのですが、Active Directory の情報を取得する箇所でエラーになってしまします。
Active Directory の情報を参照する場合、IIS、Web.config に特別な設定が必要なのでしょうか?
(他の処理で HttpContext.Current.User.Identity.Name を使用するため IISをWindows認証にしています)
Active Directory へのアクセス権限の設定が不足している?
この場合、必要となる権限と権限を付与するユーザーを教えてください。
同じ Active Directory に参加しているユーザーでPCにログインし、
他のユーザーの情報を取得しようとしています。
現在実行環境がないため、詳細なエラー情報は不明です。
■ソースコード
string user = "入力したユーザー"; string pass = "入力したパスワード"; DirectorySearcher searcher = new DirectorySearcher("(samAccountName=" + user + ")"); SearchResultCollection srcol = searcher.FindAll(); // ここでエラー string path = srcol[0].Path; DirectoryEntry entry = new DirectoryEntry(path, user, pass);
■環境
Windows Server 2008R2
IIS 7.5
ASP.NET C# 2005
■認証設定
IISの認証:Windows認証のみ有効
ASP.NETのWeb.config
authentication:Windows
authorization:allow users="*"、deny users="?"- 編集済み gbracer 2013年9月3日 14:52
2013年9月3日 14:51
すべての返信
-
認証しただけでは、認証されたユーザー名をHttpContext.Current.User.Identity.Nameに格納するだけでありIIS / ASP.NETはまだIISの権限で動作します。ASP.NETの偽装を行うことで認証したユーザーの権限で動作するようになります。
# 偽装で解決するか別の問題が発生するかはちょっとわかりません。
- 回答の候補に設定 佐伯玲 2013年9月6日 0:38
2013年9月5日 0:54 -
佐祐理さん、返信ありがとうございます。
遅くなってしまい申し訳ありません。
ASP.NETの偽装ですが、IISの認証設定画面にもASP.NETの偽装という項目があります。
Web.config に impersonate="true"、userName、password を設定するだけで良いのでしょうか?
また、どのような権限を持ったユーザーを設定すれば良いのでしょうか?
(IIS、Web.config ともに偽装設定(ユーザー指定なし)で試したのですが
質問のコードでは Active Directory 情報を取得できませんでした)
よろしくお願いします。2013年9月13日 7:42