Ir para o conteúdo

 Voltar a (WI) Geral -...
Tela cheia

Integração com LDAP

1 de Outubro de 2008, 18:04 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 39 vezes

Caros:

Pretendo utilizar o WI para geração rápida de aplicações na Polícia Militar de Santa Catarina. Já estou montando alguma coisa e os tutoriais do Breno estão ajudando.

Mas, como temos aqui um sistema de autenticação centralizado, baseado em openLDAP, gostaria de saber se existe algum módulo ou outra coisa para que os usuários dos aplicativos sejam autenticados lá ao invés de no BD.

 

Agradecido,

 

Josemar Lohn

Autor: Josemar Lohn


1Um comentário

  • 1ceb23f98eb872dd134bb77bda146cb4?only path=false&size=50&d=404Luciano Borges(usuário não autenticado)
    2 de Outubro de 2008, 9:40

     

    Josemar,

    Usamos o LDAP através de um conector. Veja código. É possível também vocês criarem plugin para o WI, quem sabe alguém não se habilita para criar um plugin para autenticação via LDAP.

    import java.util.Hashtable;

    import javax.naming.Context;
    import javax.naming.directory.DirContext;
    import javax.naming.directory.InitialDirContext;

    import br.com.itx.integration.AbstractConnector;
    import br.com.itx.integration.DatabaseAliases;
    import br.com.itx.integration.InterfaceHeaders;
    import br.com.itx.util.WIMap;

    public class AutenticaUsuario extends AbstractConnector {
    private boolean autenticado = false;
    /**Método getConexão
    * @param host
    * @param user
    * @param pass
    * @return Variável booleana com resultado da tentativa de autenticação
    *
    * Método que faz autenticação de usuário, via Ldap, com servidor de rede
    */
    private boolean getConexao(String host, String host_reserva, String user, String pass) {

    Hashtable env = new Hashtable();

    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, host);
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, "uid="+user+",ou=people,dc=sei,dc=intranet");
    env.put(Context.SECURITY_CREDENTIALS, pass);

    DirContext ctx = null;
    try {
    ctx = new InitialDirContext(env);
    autenticado = true;
    ctx.close();
    } catch (Exception e) {
    System.out.println("Autenticação do usuário "+user+" no servidor "+host+" falhou.");
    autenticado = false;
    e.printStackTrace();
    try {
    env.put(Context.PROVIDER_URL, host_reserva);
    ctx = new InitialDirContext(env);
    autenticado = true;
    ctx.close();
    } catch (Exception e2) {
    autenticado = false;
    System.out.println("Autenticação do usuário "+user+" no servidor "+host_reserva+" falhou.");
    e2.printStackTrace();
    } } return autenticado;
    }

    public void execute(WIMap wiMap, DatabaseAliases db, InterfaceHeaders head){
    if (this.getConexao(wiMap.get("host"),
    wiMap.get("host_reserva"),
    wiMap.get("tmp.txtLogin"),
    wiMap.get("tmp.txtSenha"))){
    wiMap.put("pvt.wilogin", wiMap.get("wi.session.ip"));
    wiMap.put("pvt.login.login", wiMap.get("tmp.txtLogin"));
    } else {
    wiMap.remove("pvt.wilogin");
    wiMap.remove("pvt.login.login");
    }
    }
    }

Essa comunidade não possui posts nesse blog