terça-feira, 23 de dezembro de 2008

Portlets acessando LDAP

Um autenticador LDAP é peça fundamental em qualquer arquitetura que visa ter um ponto centralizado de autenticação. O WebSphere Portal permite configurar o seu repositório de autenticação apontando para um LDAP de forma nativa.

Entretanto há situações em que voce precisa acessar o LDAP diretamente por meio de um portlet. Há várias bibliotecas na internet com sugestões de conexões, mas a mais recomendada para o ambiente WebSphere é utilizar o próprio mecanismo de JNDI disponibilizado pelo application server.

Abaixo um código de exemplo de como fazer este acesso.

//* Indica propriedades do LDAP
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=Manager,dc=ibm,dc=com");
env.put(Context.SECURITY_CREDENTIALS, "password");

try {
//* Permite enviar controles na busca do LDAP. Exemplo: SORT
Control[] connectionControls = null;

LdapContext ctx = new InitialLdapContext(env, connectionControls);
Attributes attrs = ctx.getAttributes("uid=alexbc,ou=users,dc=ibm,dc=com");

System.out.println("sn: " + attrs.get("userPassword").get());
System.out.println("sn: " + attrs.get("cn").get());

} catch (NameNotFoundException nnf) {
System.out.println("Elemento nao encontrado");

} catch (NamingException e) {
System.err.println("Erro no acesso LDAP: " + e);
}

Nenhum comentário: