- LDAP

2016-10-05 6 views
1

マイldiffファイルには、userPassword属性が進エンコーディングでMD5を使用してdbのポータルでハッシュ化されたこの- LDAP

dn:uid=test,ou=users,dc=example,dc=com 
objectclass:person 
objectclass:inetOrgPerson 
objectclass:organizationalPerson 
objectclass:top 
givenName: test 
title:test 
uid:test 
cn:test 
sn:sdf 
userPassword: 81dc9bdb52d04dc20036dbd8313ed055 
mail: [email protected] 
creatorsName: cn=Directory Manager,cn=Root DNs,cn=config 
modifiersName: cn=Directory Manager,cn=Root DNs,cn=config 

のように見えます。 また、エンコードされたパスワードをtrueに設定しても有効にはなりません。

のuserPassword上記のためのプレーンテキストのパスワードは「1234」であると私はJavaプログラムでのuserPasswordの交換と同じ

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 = "81dc9bdb52d04dc20036dbd8313ed055; 


     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); 

    } 

を認証するためのサンプルJavaプログラムは常に「無効な認証例外」

を与えています添付

は私の要件は、我々はそのパスワードをMD5にDBに格納されてHexはポータルをコードに統合されたポータルを持っているOpenDJ OPENDJ Passpword policy

の設定ですdをldapに変更するたびにldapはハッシュ値で更新されますが、上記のjavaプログラムはまったく動作しません。 深刻な助けが必要です。

ありがとうございました。

答えて

0

パスワードハッシュをバイナリ形式で保存する必要があります。あなたは「::」を使用してLDIFファイルでこれを行うことができます代わりに「:」の値から属性名を区切るために:OpenDJで

dn:uid=test,ou=users,dc=example,dc=com 
objectclass:person 
objectclass:inetOrgPerson 
objectclass:organizationalPerson 
objectclass:top 
givenName: test 
title:test 
uid:test 
cn:test 
sn:sdf 
userPassword:: 81dc9bdb52d04dc20036dbd8313ed055 
mail: [email protected] 
creatorsName: cn=Directory Manager,cn=Root DNs,cn=config 
modifiersName: cn=Directory Manager,cn=Root DNs,cn=config 
0

、あなたが追加したり、パスワードをインポートし、サーバが唯一の意志そのハッシュバージョンを維持します。そのため、ユーザー(またはインポートポリシー)のパスワードポリシーで設定されているパスワード記憶方式を使用します。

しかし、既知のスキームでパスワードが既にハッシュされていることを検出しない限り、常にハッシュを計算します。スキームは、{SSHA1}または{MD5}などの接頭辞によって識別されます。

ユーザのパスワードはすでにMD5でハッシュされており、OpenDJにはMD5でハッシュされたスキームがあるので、ユーザパスワードはOpenDJが生成または期待するものと同じ表現であることを確認する必要があります。

形式は次のとおりです。

のuserPassword:{MD5} Base64EncodingOftheMD5Hash

あなたがLDIFでこの形式を持つすべてのユーザー・パスワードを持っていたら、あなたは追加またはOpenDJでそれらをインポートするが、確認することができます既定ではないため、暗号化されたパスワード(allow-pre-encoded-passwords)を受け入れるようにパスワードポリシーを設定します。

あなたはOpenDJエンコード・パスワードツールを使用して、サンプルエンコードされた値を生成することができます。

$ encode-password -s MD5 -c password 
Encoded Password: "{MD5}X03MO1qnZdYdgyfeuILPmQ=="