• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DirectoryEntryでのLDAP認証)

DirectoryEntryでのLDAP認証

このQ&Aのポイント
  • Windows 2003R2サーバとWindows 7 ProのクライアントでLDAP認証アプリを作成しています。しかし、LDAP認証した際に、登録したuidにも関わらずログオン失敗となってしまいます。
  • VB.netのソースコードを記載しましたが、接続文字列の指定に問題があるのか、LDAPの構成に問題があるのかが分かりません。
  • LDAPサーバにuidを追加しましたが、なぜログオン失敗となるのか、LDAPへの理解が足りていないため質問させていただきました。

質問者が選んだベストアンサー

  • ベストアンサー
noname#259269
noname#259269
回答No.2

ああ、なるほど。。。私も少し勘違いしていました。失礼しました。 #パスワードは暗号化されて AD 上に格納されているので Filter で絞ることはできないと思います。 ということで、当初質問時のソースに対して、 1.DirectoryEntry の第一パラメータには、認証したいユーザが所属するパスを指定してください。  例) "LDAP://~/ou=People,dc=maxcrc,dc=com" 2.DirectoryEntry の第二、第三パラメータには、認証したいユーザIDとパスワードをそれぞれ指定してください。 これでうまくいきませんか?

-0-y
質問者

お礼

ご指摘通りの方法で無事解決しました。 ありがとうございました。

その他の回答 (1)

noname#259269
noname#259269
回答No.1

記載のとおり、第二パラメータが「ou=People」ではじまっているのがおかしいです。 ここは、LDAPサーバの検索が可能な権限を持った「ユーザ」を指定する必要があります。 あと Dispose できてないですね。Using つかいましょう。 http://d.hatena.ne.jp/zecl/20080226/p2

-0-y
質問者

補足

回答ありがとうございます。 disposeに関しては、usingではないのですが破棄処理は 以降の処理でまとめて行っており省略してあります。 丁寧なご指摘ありがとうございます。 下記のように見直してみました。 drEntry = New DirectoryEntry("LDAP://(LDAPサーバ名):389/uid=hoge,ou=People,dc=maxcrc,dc=com", "cn=manager,dc=maxcrc,dc=com", "adminpasswd", AuthenticationTypes.FastBind) Dim drSearch As New DirectorySearcher() drSearch.ServerTimeLimit = New System.TimeSpan(0, 0, KConst.LDAP_TIMEOUT) drSearch.ClientTimeout = New System.TimeSpan(0, 0, KConst.LDAP_TIMEOUT) drSearch.SearchRoot = drEntry drSearch.Filter = String.Format("(userpassword={0})", "hogepassword") drSearch.SearchScope = SearchScope.Subtree sResult = drSearch.FindOne sResult がnothingでなければパスワードが存在している処理になっております。 userpassword属性に対してFilterで、”hogepassword”を渡しているのですが、 うまく取得できておりません。 uid=hogeの階層の他の属性は取得できているのですが、 userpassword属性が取得できないもんだいにひっかかってしまいました。 userpassword属性はSSHA(デフォルト)で作成しております。 パスワードは何度か登録して確認してみたので、 パスワードの登録間違いはないと思います。 SSHAなのに”hogepassword”と文字列のまま渡しているのがいけないのでしょうか? もしご存知でしたら、お力添えの程よろしくお願いいたします。

関連するQ&A