- PR -

LDAP認証(JNDI)

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/06/16
投稿数: 1
投稿日時: 2005-06-16 19:17
現在JNDIを使用してActive Directoryで認証を行うプログラムを作成しております。

@ActiveDirectoryに存在しないユーザ、パスワードに空文字を指定した
場合、AuthenticationExceptionとなりません。何か原因として考えられ
ることがあればお教えください。
(パスワードに適当な文字列を指定した場合はAuthenticationExceptionとなります。)

AActiveDirectoryサーバが複数あり負荷分散したいため、PROVIDER_URLにドメインを
指定しているのですが、うまくいく場合とCommunicationExceptionになる場合があります。
何か原因として考えられることがあればお教えください。

env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ldap://ドメイン:389);

//***認証情報***
env.put(Context.SECURITY_AUTHENTICATION, "simple");
//ユーザ
env.put(Context.SECURITY_PRINCIPAL, ユーザID+"@"+ドメイン);
//パスワード
env.put(Context.SECURITY_CREDENTIALS, パスワード);

try{
DirContext ctx = new InitialDirContext(env);
}
catch(AuthenticationException e){
//認証エラー
return -1;
}
catch(CommunicationException e){
//接続エラー
return -2;
}
catch(NamingException e){
//その他エラー
return -3;
}
もも
ベテラン
会議室デビュー日: 2007/07/01
投稿数: 78
投稿日時: 2008-08-30 22:38
はじめまして。
現在、Aと同じCommunicationExceptionが発生してしまっていて、
大変困っています。
もし、御解決なさっていたり、何か情報をお持ちでしたら、ぜひ教えていただければと思います、
何卒宜しくお願い致します。

■事象
java1.4.2
Red Hat5

JNDIを使用し、Actibe DirectoryでLDAP認証を行っています。コードは、未記入さんと同じようにしております。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2008-08-30 23:21
CommunicationException なので接続が上手くいっていないのではないでしょうか。
ホスト名、ポート番号、ファイアウォールの設定などを確認してはいかがでしょう。

うまくいかなければ例外のメッセージ、スタックトレースをキーワードに検索するといいかもしれません。
もも
ベテラン
会議室デビュー日: 2007/07/01
投稿数: 78
投稿日時: 2008-08-31 00:02
インギ様

早速のご解答、大変ありがとうございます。
>ホスト名、ポート番号、ファイアウォールの設定などを確認してはいかがでしょう。
管理上、Active Directoryのマシンを触ることができないのですが、こちら(認証プログラムがあるマシン)から確認できるコマンドのようなものはないでしょうか?
なぜかというと、管理している側からはこの設定をすればよいという情報をいただいており、その通りに致しました。Active Directoryの設定に問題があるという根拠を示すことができれば、再度情報提供を促しやすくなるのです。
ちなみに、以下のような情報が提供されたので、
env.put(Context.SECURITY_PRINCIPAL, ユーザID+"@"+"hogehoge.co.jp");
と設定いたしました。あっているかご確認いただけると幸いです。(初めてのActive Directory認証で、全てを疑ってしまっています。)

↓提供された情報
CN=logonID,CN=user,DC=hogehoge,DC=co,DC=jp


>うまくいかなければ例外のメッセージ、スタックトレースをキーワードに検索するといいかもしれません。
そうしたいのは、山々なのですが管理上全てのファイルの持ち出しができません。
検索できる環境もないので、現在記憶している情報を元に場所を移して解決方法を模索しており大変困っています。
お手数とは思いますが、何卒、宜しくお願い致します。

[ メッセージ編集済み 編集者: もも 編集日時 2008-08-31 00:11 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2008-08-31 00:55
telnet でホスト、ポートを指定して接続ができるかどうかを確かめるのはいかがでしょう。
もも
ベテラン
会議室デビュー日: 2007/07/01
投稿数: 78
投稿日時: 2008-08-31 02:31
度重なる、ご返答大変感謝しております。
>telnet でホスト、ポートを指定して接続ができるかどうかを確かめるのはいかがでしょう。
確かにそうでした。
焦ってしまい、忘れていました。
telnetで、ホスト、ポートを指定して接続できなかった場合、ホスト、またはポートが間違っているという結果が得られますね。
重ね重ねで大変恐縮なのですが、もし、ホスト名が間違っていた場合は、UnknownHostExceptionが発生するとの理解であっていますでしょうか?
大変お手数とは思いますが何卒、宜しくお願い致します。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2008-08-31 02:50
>telnetで、ホスト、ポートを指定して接続できなかった場合、ホスト、またはポートが間違っているという結果
>が得られますね。
そうですね。または、ファイアウォールで塞がれている可能性も。

>重ね重ねで大変恐縮なのですが、もし、ホスト名が間違っていた場合は、UnknownHostExceptionが発生する
>との理解であっていますでしょうか?
JNDI で LDAP に繋げるということをやったことがないのでわかりませんが、たぶんそうではないでしょうか?
ありえないホスト名を指定してみれば切り分けられますね。

[ メッセージ編集済み 編集者: インギ 編集日時 2008-08-31 02:50 ]
もも
ベテラン
会議室デビュー日: 2007/07/01
投稿数: 78
投稿日時: 2008-08-31 03:14
早々のご返答、誠にありがとうございます。
>ありえないホスト名を指定してみれば切り分けられますね。
そうですね。
現在、本環境の使用許可がでませんので、テスト環境を作成して早急に確認したいと思います。大変ありがとうございます。
結果が出次第ご報告させてください。
誠にありがとうございました。
1

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