- PR -

ActiveDirectry上に対し、ユーザ検索を行っても属性が取得できない

投稿者投稿内容
チャブーン
大ベテラン
会議室デビュー日: 2006/11/25
投稿数: 149
投稿日時: 2007-10-25 17:02
チャブーンです。

#う〜ん。

まず私は JAVA プログラマではありません。ですから いちごさん のコードのデバッグはできません。

そうはいっても仕方がないので、いちごさんのやりたいプログラムのサンプルを探したところ、したのページにそっくりのものがありますよ。

http://emxas.jp/ITL/sample_code/ldap.html

見てもらえればわかりますが、LDAP シンプル認証でバインド (Users コンテナの中にある 34044 ユーザの場合) するためには、このようにコーディングしないとダメだと思います。

  env.put(Context.SECURITY_AUTHENTICATION, "simple");
  env.put(Context.SECURITY_PRINCIPAL, "CN=34044,CN=Users,DC=AAA,DC=BBB");
  env.put(Context.SECURITY_CREDENTIALS, "H0YYRT");

あと、BeseDN をどこに決めるか、ユーザオブジェクトをどの OU に配置するか、ということは最終的には LDAP の設計次第ですので、一般論といったものはないでしょう。Active Directory ドメインのすべてのオブジェクトは DC=AAA,DC=BBB (ドメイン DN) 配下にあるということ、デフォルトのユーザオブジェクトは CN=Users に格納されるということを認識して、ご自分で決めてください。

最後に私が「注意」といったことですが、これは単に DN 属性名 (OU とか CN とか) を間違えないように!ということで他の意味はありません。

[ メッセージ編集済み 編集者: チャブーン 編集日時 2007-10-25 17:23 ]
いちご
ベテラン
会議室デビュー日: 2007/03/13
投稿数: 80
投稿日時: 2007-10-25 17:49
いちごです。
チャブーンさん。ホントに有難うございます。
今までは、以下のようにしていました。
SECURITY_PRINCIPALの引数がまずかったということでしょか。。
一度、チャブーンさんのご助言をご参考にトライしてみたいと思います。
  env.put(Context.SECURITY_AUTHENTICATION, "simple");
  env.put(Context.SECURITY_PRINCIPAL, "34044@AAA.BBB");
  env.put(Context.SECURITY_CREDENTIALS, "H0YYRT");

あと、ADの構造についてもご助言有難うございます。
=Users に格納されるということを注意したいと思います。

来週辺りに、また客先にいってトライしてまいりますので、結果はまたご報告させて
頂きます。
いろいろとご助言を賜り有難うございました。
いちご
ベテラン
会議室デビュー日: 2007/03/13
投稿数: 80
投稿日時: 2007-11-02 16:19
本件のテスト結果をご報告致します。
以下の接続文字列でユーザの属性を取得することが出来ました。

 ・接続URL  :HTTP://ADサーバのIPアドレス:389
 ・ドメイン :AAA.BBB 
 ・BaseDN  :CN=USERS,DC=AAA,DC=BBB
 ・フィルタ :CN=34044
 ・UserPrincipal:34044@AAA.BBB

今回、以下のことが勉強になりました。
・ActiveDirectryでは、デフォルトコンテナである「USERS」の下に、OU等を
 作成している場合、BaseDNは、先頭に”CN=USERS,”が必要である
・UserPrincipalについては、OpenLDAPと違って、ActiveDirectryの場合、
 ”ユーザ情報@ドメイン”になる。

チャブーンさん、柴田たけおさん、いろいろとご助言賜り誠に有難うございました。

スキルアップ/キャリアアップ(JOB@IT)