还有一个用户的DN应该是什么样子的?
我在网上看到的示例有:
String DN = "cn=user1, ou=Austin,o=ibm,c=us";   // DN to be authenticated 那具体到我这个系统又应该是什么样子呢?

解决方案 »

  1.   


    呵呵…… 学习学习……
    我猜是够呛啊,JNDI 目前支持的好像只有 DNS, NDS, LDAP, CORBA, RMI, NIS……
      

  2.   

    public static void main(String[] args)
    {
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, "ldap://192.168.1.1:389/DC=localdomain,DC=com");
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, "cn=username,cn=users,DC=localdomain,DC=com");
    env.put(Context.SECURITY_CREDENTIALS, "password"); try
    {
    DirContext ctx = new InitialDirContext(env);

    SearchControls constraints = new SearchControls();
    /*注释掉以显示所有属性
    ArrayList attrList = new ArrayList();
    attrList.add("sn");
    attrList.add("displayName");
    attrList.add("maxPwdAge");
    attrList.add("PasswordExpirationDate");
    attrList.add("pwdLastSet");
    attrList.add("userAccountControl");
    attrList.add("instanceType");
    attrList.add("nTSecurityDescriptor");
    attrList.add("objectCategory");
    attrList.add("objectClass");
    attrList.add("objectSid");
    attrList.add("sAMAccountName");
    String[] returnAttributes = new String[attrList.size()];
    attrList.toArray(returnAttributes);
    constraints.setReturningAttributes(returnAttributes);
    */
    constraints.setSearchScope(SearchControls.ONELEVEL_SCOPE);
    NamingEnumeration results = ctx.search("cn=users", "cn=*", constraints);
    displayNamingEnumeration(results);
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }public static void displayNamingEnumeration(NamingEnumeration en) throws NamingException
    {
    while (en != null && en.hasMore())
    {
    Object obj = en.next();
    if(obj instanceof SearchResult)
    {
    SearchResult si = (SearchResult) obj;

    System.out.println("name: " + si.getName());

    Attributes attrs = si.getAttributes();
    if (attrs == null)
    {
    System.out.println("No attributes");
    }
    else
    {
    for (NamingEnumeration ae = attrs.getAll(); ae.hasMoreElements();)
    {
    Attribute attr = (Attribute) ae.next();
    String attrId = attr.getID();

    for (Enumeration vals = attr.getAll();vals.hasMoreElements();)
    {
    System.out.print(attrId + ": ");
    Object o = vals.nextElement();
    if(o instanceof byte[])
    System.out.println(new String((byte[])o));
    else
    System.out.println(o);
    }
    }
    }
    }
    else
    {
    System.out.println(obj);
    }
    System.out.println();
    }
    }
      

  3.   

    搞定了,谢谢cbhyk()SECURITY_PRINCIPAL那里也可以设置为[email protected]以用户身份登陆