1

Java クラスを使用して OpenLDAP の属性を更新できるようにする必要があります。

LDAP エントリの作成に挑戦しましたが、適切な LDAP エントリではなく、Java オブジェクトのように見えます。(ぐう)

javax.naming.Context をインポートします。
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.naming.NameAlreadyBoundException;
import javax.naming.directory.*;
import java.util.*;

公開クラス TestLDAP {
        static final long serialVersionUID = -1240113639782150930L;

        final static String ldapServerName = "localhost:636";
        final static String rootdn = "cn=The Manager,ou=mydept,o=mycompany";
        final static String rootpass = "パスワード";
        final static String rootContext = "ou=mydept,o=mycompany";

        public static void main( String[] args ) {
            System.setProperty("javax.net.ssl.trustStore", "C:\\cacerts");


                プロパティ env = new Properties();
                env.put("com.sun.jndi.ldap.trace.ber", System.out);
                env.put( Context.INITIAL_CONTEXT_FACTORY,
                         "com.sun.jndi.ldap.LdapCtxFactory" );
                env.put(Context.SECURITY_PROTOCOL, "ssl");
                env.put( Context.PROVIDER_URL, "ldap://" + ldapServerName + "/" + rootContext );
                env.put( Context.SECURITY_PRINCIPAL, rootdn );
                env.put( Context.SECURITY_CREDENTIALS, rootpass );

                試す {
                        // 環境を使用して初期ディレクトリ コンテキストを取得する
                        DirContext ctx = new InitialDirContext( env );

                        // LDAP エントリを追加
                        属性 myAttrs = new BasicAttributes(true);
                        属性 oc = new BasicAttribute("objectclass");

                        oc.add("inetOrgPerson");
                        oc.add("組織の人");
                        oc.add("人");
                        oc.add("トップ");
                        myAttrs.put(oc);
                        myAttrs.put("cn","test996");
                        myAttrs.put("sn","テスト 996");

                        ctx.bind("cn=test997", myAttrs);
                } catch ( NameAlreadyBoundException 鍋 ) {
                        System.err.println( "値は既にバインドされています!" );
                キャッチ(例外e){
                        e.printStackTrace();
                }
        }
}

助けてください!

4

1 に答える 1

4

LDAP を使用してからしばらく経ちましたが、Javadoc を見ると、間違った方法を使用していると思います。次のようなものを試してください:

ctx.bind("cn=test997", null, myAttrs);

LDAP チュートリアルを読みましたか? LDAP の作業をしなければならなかったとき、これはかなり役に立ちました。

于 2008-10-09T08:43:51.340 に答える