
ASP.netをVS2008(言語はVB)で開発しています。ローカル(WinXP)ではAD情報が取得できるのに、
WindowsServer2008(IIS7.0)上で実行したらエラーになりました。
エラー内容:「操作エラーが発生しました」
場所 System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
-------------------------------------
コード:
Dim nameCheck As String = System.Security.Principal.WindowsIdentity.GetCurrent.Name.ToString()
Dim serverPath As String = "LDAP://servername/DC=hogehoge,DC=local"
Dim entry As New System.DirectoryServices.DirectoryEntry(serverPath)
'ログオンユーザーを変数へ代入
Dim lgUser As String = Environment.UserName
Dim search As New System.DirectoryServices.DirectorySearcher()
' 検索のルートになるDirectoryEntryを指定
search.SearchRoot = entry
' 検索条件を指定します。下ではアカウント名と変数lgUserの一致が条件
search.Filter = "(samAccountName=" + lgUser + ")"
Dim result As System.DirectoryServices.SearchResult
result = search.FindOne
-------------------------------------
この↑FindOneでエラーになります。
lgUserにはユーザーID、
nameCheckにも、ドメイン名/ユーザーIDで、予定通りの値が取得出来ていることを確認しています
(※nameCheckはコード上必要ありませんが
思った通りの動きをしているか確認のため取得し、エラー時に表示して確認しました)
IIS7.0上では、IISマネージャを使用して、
「認証」で
・ASP.NET偽装
・Windows認証
を有効とし、他(フォーム認証、基本認証、匿名認証)はすべて無効にしています
lgUserにセットされる値はIDなので、
AD情報から、該当する人の名前と、メールアドレスを取得したいです。
(イントラネット上でデフォルト表示に使用します)
IIS7.0上で、ADに接続できるような設定が必要なのかな?と思っているのですが
具体的にどこをどうしたらよいのかわからず、途方に暮れています
こちらの情報が少ないようでしたら追加致します。
もう3日くらい詰まっているので、ヒントだけでも教えていただけると助かります。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
ただのユーザで偽装しているので、AD内オブジェクトの検索ができない(権限がない)のではないかと。
アプリケーションプールアカウントにそれなりの権限を付与し、偽装をやめて、操作者のユーザID 自体は My.User.Name で取得するか、
アプリケーションプールアカウントはデフォルトで、ADの検索する時だけコーディングで偽装するかでいけると思います。
早速の回答ありがとうございます!
別件でトラブルがあって、回答遅くなり、申し訳ありません。
下記手順で出来ました!
1.アプリケーションプールのIDがNetworkServiceだったので、ドメインのユーザーに変更。
2.ASP.NET偽装を無効。
3.操作者のユーザIDはMy.User.Nameで取得(¥を検索してユーザIDだけ取り出し)
AD内オブジェクトの検索をするときに、アプリケーションプールのIDを使わず、
Windows認証で取得したユーザー名(My.User.Name)で見てくれればいいのに...と思いましたが
パスワードの情報がないからNG...という認識は合っているのでしょうか??
「コーディングで偽装」をまだ試していないのですが
http://support.microsoft.com/kb/306158/ja#3
↑このあたりを参考にもう少しがんばってみようと思います
とりあえず教えていただいた一つの方法で実現できたので大変助かりました!
ありがとうございました<(_ _)>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
String""から型'Double'への変...
-
SQLでエラーです。
-
VBAでfunctionを利用しようとし...
-
【VBA】ワークブックを開く時に...
-
文字列内で括弧を使うには
-
レコード登録時に「演算子があ...
-
On ErrorでエラーNoが0
-
インポート時のエラー「データ...
-
クラスモジュールからのErr.Rai...
-
UBoundに配列がありませんとエ...
-
Excel vbaについての質問
-
ACCESSで値を代入できないとは?
-
Filter関数を用いた結果、何も...
-
VBAのリストボックスで、横スク...
-
実行時エラー 438 の解決策をお...
-
mailstorehomeのエクスポートで...
-
VBA エクセル で FIND でのエラ...
-
【VBAエラー】Nextに対するFor...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
【VBA】ワークブックを開く時に...
-
マクロで"#N/A"のエラー行を削...
-
文字列内で括弧を使うには
-
String""から型'Double'への変...
-
【Access】Excelインポート時に...
-
VBA データ(特定値)のある最...
-
On ErrorでエラーNoが0
-
インポート時のエラー「データ...
-
ACCESSで値を代入できないとは?
-
VBA エクセル で FIND でのエラ...
-
Filter関数を用いた結果、何も...
-
レコード登録時に「演算子があ...
-
ApplicationとWorksheetFunctio...
-
Excel vbaについての質問
-
【VBAエラー】Nextに対するFor...
-
実行時エラー 438 の解決策をお...
-
「実行時エラー '3167' レコー...
おすすめ情報