/* Simple LDAP authentication and attribute grab.
   Ryan Beales, 19/9/03
	   
LDAP example code:
 http://java.sun.com/products/jndi/tutorial/ldap/security/ldap.html
 http://java.sun.com/products/jndi/tutorial/getStarted/examples/directory.html

LDAP Browser:
 http://www.iit.edu/~gawojar/ldap/
*/


import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.DirContext;
import javax.naming.directory.Attributes;
import javax.naming.NamingException;


class ldaptest {
	public static void main(String[] args) {
                /* The JCU LDAP service is an anonymous service!
                   You must check that your users have entered usernames and passwords
                   that are not blank or authentication will always suceed.
                */
                String username = "jc123456";
                String password = "xxx";

		Hashtable env = new Hashtable();

		env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
		env.put(Context.PROVIDER_URL,"ldap://ldap.jcu.edu.au:389/dc=jcu,dc=edu,dc=au");
		env.put(Context.SECURITY_AUTHENTICATION, "simple");
		env.put(Context.SECURITY_PRINCIPAL, "uid=" + username + ",ou=Users,dc=jcu,dc=edu,dc=au");
		env.put(Context.SECURITY_CREDENTIALS, password);

		try {
			DirContext ctx;

			ctx = new InitialDirContext(env);
			System.out.println("Logged in!");

			Attributes attrs = ctx.getAttributes("uid=" + username + ",ou=Users");
			System.out.println("cn: " + attrs.get("cn").get());

		} catch(javax.naming.AuthenticationException e) {
			System.out.println("Authentication Exception: " + e);
			System.exit(1);
		} catch(javax.naming.NamingException e) {
			System.out.println("Naming Exception error: " + e);
			System.exit(1);
		}
	}
}

