私は問題に直面しています。できるだけ早くこの問題を解決する必要があります。Java LDAP - ユーザーを認証できません
私は
号-1だけLDAPユーザのサンプル認証のための非常に単純なJavaプログラムを持っている - :
public static void main(String[] args) throws NamingException {
final String ldapAdServer = "ldap://0.0.0.0:389";
final String ldapUsername = "uid=test,ou=People,dc=example,dc=com";
final String ldapPassword = "gdyb21LQTcIANtvYMT7QVQ==";
Hashtable<String, Object> env = new Hashtable<String, Object>();
env.put(Context.SECURITY_AUTHENTICATION, "simple");
if (ldapUsername != null) {
env.put(Context.SECURITY_PRINCIPAL, ldapUsername);
}
if (ldapPassword != null) {
env.put(Context.SECURITY_CREDENTIALS, ldapPassword);
}
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ldapAdServer);
env.put("java.naming.ldap.attributes.binary", "objectSID");
DirContext ctx = new InitialDirContext(env);
}
上記のプログラムを実行するには、「[LDAPを与える:エラーコード49 - 無効資格]] "エラーまた、私はLDAPのユーザーのエクスポートを取って、userPasswordはプログラムに入力されたものと同じです
dn: uid=test,ou=People,dc=example,dc=com objectClass: person objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: top uid: test mail: [email protected] userPassword: {MD5}gdyb21LQTcIANtvYMT7QVQ==
上記の入力済みのパスワードとjavaコードがエラーを発生していますdsconfigを使用してMD5を使用するために "default-password-storage-scheme"を設定しています。 MD5の16進パスワードをLDAPに渡して認証を受ける。
Issue- 2 - :私たちはバックエンドシステムとしてのLiferayを使用していて、ユーザーがパスワードのLiferayを変更している場合は、すべてのユーザーの詳細は、LDAPに格納されている必要があり は、この「098f6bcd4621d373cade4e832627b4f6 」のようなものをMD5を使用してパスワードを生成し、進エンコーディングされているが、エクスポートldiffオプションを使用してエクスポートしたときと同じときに、私たちはldap "{MD5} gdyb21LQTcIANtvYMT7QVQ =="のようになります。liferayとldapのパスワードの間に不一致があります。liferay md5パスワードをldapに入れます。 同じパスワードを入力してldiffファイルを取得し、javaプログラムに同じパスワードを入力しても機能しないようで、プレーンテキストのパスワードが機能します。
これについて深刻な助けが必要です。
追加情報が必要な場合は、お気軽にご相談ください。
こんにちは、我々はすでにLDAPへのLiferay DBからインポートされるべきであり、そのパスワードは、今私は、このシナリオLiferayは六角でMD5を使用して処理しない方法をハッシュされる40以上の数百万人のユーザーを持つissue1ための即時応答をありがとうバイナリ形式の場合、ベース64エンコーディングを意味しますか? – ravicandy1234