sexta-feira, 28 de janeiro de 2011

Tela de Login em PHP autenticando no Active Directory (AD)

Introdução:
As vezes necessitamos disponibilizar determinada informação, como um Wiki por exemplo, para ser acessada de qualquer local que estivermos, mas não queremos que essa informação seja acessada por qualquer pessoa.
Muitas vezes temos informações que necessitam de privacidade e para isso utilizamos telas de login, mas se já existe na rede uma estrutura de LDAP, que é o AD, para que ficar criando banco de dados para autenticar usuários?

Pré-Requisitos:
Você precisa ter o módulo ldap do php instalado e habilitado no seu servidor.

Entendo a estrutura dos arquivos:
index.php - Página de Login
verif.php - Página de validação das informações digitadas, realiza a conexão com o AD, retorna ao index.php ou segue para a página do seu aplicativo.
funcs.js - Função responsável por não permitir usuário e/ou senha em branco
pagina_que_voce_quer_chamar.php: Essa página é o index da aplicação que você quer proteger, como a página inicial do Wiki por exemplo, será necessário acrescentar um pequeno trecho de código nela, pois se o usuário chamar a página diretamente sem se autenticar, vai ser automáticamente redirecionado para a página de login.

Código das Páginas:
Index.php
<?php


    session_start('sessao');

?>
<html>
<head>
<script language="JavaScript" type="text/javascript" src="funcs.js"></script>
</head>
<body>

    <form method="post" action="verif.php" name="form" AUTOCOMPLETE='ON' onSubmit="return valida()">
        usuario:<br>
        <input type="text" name="usu" size="50" maxlength="50" >
        <br>
        Senha:<br>
        <input type="password" name="senha" size="50" maxlength="9" >
        <br><br>
        <input type="submit" value="Entrar">
    </form>

</body>
</html>

Verif.php
<?php

set_time_limit(0);

function valida_ldap($srv, $usr, $pwd)
{

    $ldap_server = $srv;
    $auth_user = $usr;
    $auth_pass = $pwd;

    // Tenta se conectar com o servidor
    if (!($connect = @ldap_connect($ldap_server))){
       return FALSE;
    }

    // Tenta autenticar no servidor
    if (!($bind = @ldap_bind($connect, $auth_user, $auth_pass))) {
        // se nao validar retorna false
        return FALSE;
    } else {
        // se validar retorna true
        return TRUE;
    }

} // fim funcao conectar ldap

$dominio = "@seudominio.com.br";
$usu = $_REQUEST['usu'].$dominio;
$senha = $_REQUEST['senha'];
$ip_server = "XXX.XXX.XXX.XXX";

if (valida_ldap($ip_server, $usu, $senha)) {
    echo "usuario autenticado<br>";

    session_start();
    $_SESSION['usu'] = $usu;

    header("Location: pagina_que_voce_quer_chamar.php");

}else {
    echo "Usuario ou Senha Invalidos";
    echo "<br><input type='button' value='voltar' onclick='location.href=\"index.php\";'>";
}

?>

funcs.js
function valida() {

    if (form['usu'].value == "") {
        alert("O campo USUARIO e obrigatorio");
        form['usu'].focus();
        return false
    }

    if (form['senha'].value == "") {
        alert("O campo SENHA e obrigatorio");
        form['senha'].focus();
        return false
    }
}

Código da página
<?php

session_start();

        // se usuario nao registrado, redireciona p/ validacao

        if(!isset($_SESSION['usu']))

                header("Location: index.php?op=err");
Continuação do código da aplicação

Agradecimentos:
Ludgero Scocia - Meu Personal PHP Developer Tabajara, sempre que preciso de algo em PHP acabo apelando para o Lud, que sempre me socorre!!!
Valew Brother!!!!

Referências:
Autenticando no Active Directory com PHP via LDAP
Como autenticar no Active Directory usando PHP?

terça-feira, 4 de janeiro de 2011

Telefone Embratel Livre - A Cilada - ANATEL A COMPARSA

Quero compartilhar com vocês a cilada que estou passando com a Embratel, produto Telefone Livre, e como a ANATEL não faz nada a respeito.

Tenho o produto a quase 3 anos e nunca tive problemas até 2 meses atrás, foi aí que o pesadelo começou, tudo é muito bom enquanto funciona, mas precisamos da empresa é justamente quando ele acontece.

Fiz uma reclamação no Reclame Aqui e mesmo assim não deram resposta... Segue o resumo da ópera:

Eu faço as ligações normalmente, inclusive continuam me cobrando por isso, porém o mesmo não recebe ligações, cai direto na caixa postal, eu já quatro contatos com a empresa, protocolos abaixo, reprogramei o aparelho duas vezes e o problema continua.
56379391, 56973475, 56973600, 57206745

Após isso abri um chamado na Anatel Protocolo 1579905.2010, a Embratel entrou em contato comigo no dia 24 e agendou uma visita para o dia 27/12, fiquei o dia inteiro em casa, o técnico não apareceu e não me foi dada nenhuma satisfação, entrei em contato novamente com a Anatel que me disse que a empresa teria 2 dias para se pronunciar (terça e quarta), nada ocorreu, liguei hoje novamente e a Anatel disse que vai comunicar a empresa pela TERCEIRA VEZ!!!




NADA OCORREU, a Embratel, me ligou na segunda-feira (03/01/11) e agendou o atendimento para hoje na parte da manhã, NADA, liguei lá e a atendente diz que no sistema consta que foi aberto HOJE o chamado e que o técnico tem 24 horas para entrar em contato, MENTEM, DISTORCEM AS INFORMAÇÕES E CADASTRAM O QUE QUEREM NO SISTEMA!!!

Liguei pela QUARTA vez na Anatel e a atendente me disse que o NUMERO DE NOTIFICAÇÕES QUE A EMPRESA RECEBE É ILIMITADO, mas que podem ser multados, claro que sim, ACREDITO EM PAPAI NOEL TAMBÉM.

NESSE NOSSO PAÍS O ÓRGÃO DE REGULAMENTAÇÃO É COMPARSA DAS EMPRESAS!!!

Como pode isso??? A empresa não respeita seus clientes, não respeita o órgão que regulamenta o setor e continua a fazer propagandas e vender produtos normalmente???

ME SINTO EXTREMAMENTE LESADO E INDIGNADO!!!!