1

現在、LDAPへの接続資格情報としてユーザーとパスワードを使用しています(ADのユーザーを認証するため)。

ここでの認証では、InitialDirContext を使用して (Active Directory 用の) 初期コンテキストを作成しました。ここで、認証情報を含む一連の環境プロパティを指定します。

私のコードは次のようになります:

env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ...);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, ...);
env.put(Context.SECURITY_CREDENTIALS, ...);
env.put("com.sun.jndi.ldap.connect.timeout", ...);

try {
  ctx = new InitialLdapContext(env);
}
catch (NamingException e) {
    System.out.println("error")
}

このコードを変更して、NTLM を使用して LDAP に対して資格情報として入力されたユーザー名とパスワードを認証するようにします。

例を教えてください。

NTLM - 認証 - 整合性 - 機密性を提供する Microsoft セキュリティ プロトコルのスイートです。

4

2 に答える 2

0

忘れてください。Java では NTLM の SASL サポートはありません。GSS-API を使用します。常に独自のテクノロジーを使用しないでください。行き止まりがあります。認証を使用しないsimpleでください。パスワードはクリアテキストで転送されます。少なくとも Digest MD5 を使用してください。

于 2012-12-27T12:03:59.357 に答える
0

また、NTLM を使用して Microsoft LDAP ディレクトリに接続したいと考えていました。

残念ながら、Kerberos/NTLM と BIND/MD5 のどちらで接続するかによって、Microsoft の LDAP 管理者権限が異なり、標準の管理ツールの使用にうんざりしました。また、Kerberos は、ユーザー、ユーザー クライアント、および LDAP サーバーが同じドメインにあり、JRE 用にエラーが発生しやすい JAAS 構成ファイルを構成する必要がある場合に制限されます。

最も使用されているディレクトリであり、既存のソリューションも見つからなかったため、自分で NTLM BIND ソリューションを作成しようとしましたが、成功しました。

UnboundID Java LDAP SDK を追加の LDAP BIND クラスで拡張する単一の Java クラス ファイル: https://sourceforge.net/projects/javaldapntlmbind/

このソリューションは UnboundID Java LDAP SDK を使用し、NTLM 処理には samba.org の JCIF Java ライブラリを使用します。JCIF を使用しているため、プラットフォームに依存せず、Windows で実行する必要はありません。

于 2013-12-20T18:28:55.957 に答える