- - PR -
LDAPのBIND処理のJNDIクラス
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2003-09-18 10:38
お世話になります。be1300ccと申します。
現在LDAPプログラミングでJNDIを使用し、LDAPでの処理をコーディングしているのですが、 BINDの場合(DirContextのbindを使用)のサンプルソースを探しております。 どなたかご存知の方いらしゃいませんでしょうか? ご享受お願いします。 ※因みに、SEARCH処理とADD処理は作成できました。 |
|
投稿日時: 2003-09-19 14:13
お世話になります。be1300ccです。
一応、何とか作成してみたのですが。 多分ポイントとなるのは、lookupだと思うのですが、実行時エラーが出てしまいます。 【実行時エラー】 $ java Bind01 '' '' javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]; remaining name 'cn=Manager,dc=tec,dc=jp' ロジックの組み方に問題があるのでしょうか? ご享受お願いします。 ※コード上必要のない部分や間違った箇所も多少あるかもしれません。 【Bind01クラス】 import javax.naming.* ; import javax.naming.Context ; import javax.naming.directory.* ; import java.util.Hashtable ; public class Bind01 { public static void main(String[] args) { Hashtable env = new Hashtable(11) ; env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory") ; env.put(Context.PROVIDER_URL,"ldap://win:389/dc=tec,dc=jp") ; env.put(Context.SECURITY_PRINCIPAL,"cn=Manager,dc=tec,dc=jp") ; env.put(Context.SECURITY_CREDENTIALS,"secret") ; try { DirContext initctx1 = new InitialDirContext(env) ; DirContext ctx = new InitialDirContext(env); DirContext envCtx1 = (DirContext) initctx1.lookup(args[0]) ; //Context envCtx0 = (Context) initctx1.lookup(args[0]) ; String id0 = args[0]; Object data0 =args[1]; //System.out.println(ctx.lookup("cn=Manager,dc=tec,dc=jp").toString()); //DirContext dir = (DirContext) envCtx0.lookup(id0) ; DirContext dir = (DirContext) envCtx1.lookup("cn=Manager,dc=tec,dc=jp") ; BasicAttribute ba = (BasicAttribute)data0; Attribute attr = new BasicAttribute(id0 ,data0); Attributes attra = new BasicAttributes(id0 ,data0); String id11 = id0; attra.put(id11 ,data0); ctx.bind(id11 ,data0); } catch(Exception e) { e.printStackTrace(); System.out.println("e: " + e) ; } } } |
|
投稿日時: 2003-09-22 15:33
お世話になります。be1300ccです。
一応、Bindの処理を想定したロジックを組んでみたのですが、Bind時に表示されるエラーが どうしても解決できなくて困っております。 多分エラー内容から推測すると、Bind時のパラメータ設定に問題があると思うのですが・・・。 〜APIより〜 bind(Name name, Object obj, Attributes attrs) 関連付けられた属性とともに、名前をオブジェクトにバインドします。 このObject objに実際には何を指定してあげれば良いのでしょうか? ご享受お願いします。 【エラー】 javax.naming.directory.InvalidAttributeIdentifierException: [LDAP: error code 17 - javaSerializedData: attribute type un defined]; remaining name 'cn=Manager10' 【ソース】 import javax.naming.* ; import javax.naming.Context ; import javax.naming.directory.* ; import java.util.Hashtable ; public class Bind02 { public static void main(String[] args) { Hashtable env = new Hashtable(11) ; env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory") ; env.put(Context.PROVIDER_URL,"ldap://win:389/dc=tec,dc=jp") ; env.put(Context.SECURITY_PRINCIPAL,"cn=Manager,dc=tec,dc=jp") ; env.put(Context.SECURITY_CREDENTIALS,"secret") ; try { DirContext initctx1 = new InitialDirContext(env) ; DirContext ctx00 = new InitialDirContext(env); DirContext dir = (DirContext) initctx1.lookup(args[0]) ; Attributes attrs = dir.getAttributes(""); NamingEnumeration ae = attrs.getAll(); while ( ae.hasMoreElements() ) { Attribute at = (Attribute) ae.next(); System.out.println("at:" + at); } Attributes attra = new BasicAttributes(); attra.put(new BasicAttribute( "objectClass", "organizationalRole" )); Object organizationalRole = attra; System.out.println("*** organizationalRole: ** " + organizationalRole) ; Object obj00 = organizationalRole; System.out.println("*** obj00: ** " + obj00) ; attra.put(new BasicAttribute("sn", "Sales0")); attra.put(new BasicAttribute("description", "SalesManager0")); attra.put(new BasicAttribute( "telephonenumber", "000-0000-0000" )); System.out.println("obj00: " + obj00) ; System.out.println("organizationalRole: " + organizationalRole) ; ctx00.bind("cn=Manager10", obj00 ,attra); } catch(Exception e) { e.printStackTrace(); System.out.println("e: " + e) ; } } } |
1
