Autenticando o usuário - bjverde/formDin GitHub Wiki

Esse capitulo trata da autenticação do usuário ou verificação da sua identidade. Mais informações na Wikipedia

Autenticando via senha em banco

É forma mais comum de autenticar um usuário é via banco de dados. Na Aplicação de exemplo v2.5 do FormDin apresenta um exemplo completamente funcional.

Criando o banco de dados

No seu banco de dados crie uma tabela com no mínimo dois campos

  • usuário:
  • senha: recomendo no mínimo varchar de 200

As senhas de cada usuário deve ser criptografada utilizando password_hash

Alterando o index.php

No index.php da raiz da sua aplicação deverá incluir as linhas abaixo.

$app->setLoginFile('includes/tela_login.php');
$login = ArrayHelper::get( $_SESSION[APLICATIVO],'LOGIN');
$app->setLoginInfo($login);

Depois de informado o setLoginFile o formDin sabe que só pode carregar um modulo se tiver um usuários logado. Mesmo o carregamento via parâmetro GET só funciona se tiver um usuário logado.

Verificando a senha

No arquivo tela login deverá chamar a classe de negócio "Acesso.class.php"

   public static function login( $login_user, $pwd_user )	{
	$user = Acesso_userDAO::selectByLogin($login_user);
        if (password_verify($pwd_user, $user['PWD_USER'][0])) {
            $_SESSION[APLICATIVO]['IDUSER'] = $user['IDUSER'][0];
            $_SESSION[APLICATIVO]['LOGIN']  = $user['LOGIN_USER'][0];
            $msg = 1;
        }else{
            $msg = 'Login Invalido !';
        }
        return $msg;
    }

Autenticando via LDAP / Basic Authentication

Autenticação via LDAP é um tipo de Basic Authentication que acontece em duas etapas.

  1. Configurar o Apache para receber a senha via LDAP ou Arquivo (simulando LDAP)
  2. No PHP pegar o usuário informado via $_SERVER['PHP_AUTH_USER'] mais informações no site do PHP

O que é Basic Authentication ?

LDAP no Windows

Usando o WAMP. Para configurar a autenticação deve ser realizado os seguintes passos:

  1. Habilitar os módulos abaixo. Click esquerdo no wamp > Apache 2.4.X > Apache Modules. ATENÇÃO não edite o httpd.conf via Editor
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule ldap_module modules/mod_ldap.so

LDAP no Debian

  1. sudo a2enmod ldap authnz_ldap
  2. sudo vim /etc/apache2/apache2.conf e incluir o que está abaixo
<Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
  1. sudo /etc/init.d/apache2 restart

Arquivo .htaccess para LDAP

Criar um arquivo com o nome .htaccess dentro da pasta da sua aplicação, com o seguinte conteúdo:

  
   AuthName "Informe o seu usuário e senha"
   AuthBasicProvider ldap
   AuthType basic
   AuthLDAPURL "ldap://SERVIDOR/OU=Usuarios,DC=br?sAMAccountName?sub"
   AuthLDAPBindDN "CN=anoncvs,OU=Usuarios,DC=br"
   AuthLDAPBindPassword anoncvs
   AuthLDAPBindAuthoritative off
   LDAPReferrals off
   Require valid-user

Ambiente com Autenticação por Arquivo

Pode ser útil em alguns casos no qual o comportamento do sistema está vinculado a um usuário específico. Por exemplo, um determinado erro só acontece para o usuário X. Para essa situação é possível que a aplicação seja autenticada por um arquivo de senhas.

Para configurar a autenticação basta seguir os seguintes passos:

  1. Criar um arquivo com o nome .htaccess com o seguinte conteúdo
 AuthType Basic
 AuthName "Zona Restrita"
 AuthUserFile /.htpasswd
 Require valid-user
 Options FollowSymLinks Indexes
  1. Criar arquivo .htpasswd e colocar os logins e senhas no seguinte formato.
 tiago:123
 lucivaldo:123
 joao:123
 paulo:123
 francisco:123

Atenção:

  • o <caminho_aplicacao_servidor> não deve conter espaços em branco.
  • Exemplo de caminho valido no Windows com Wamp 3.1.0 "D:/wamp/www/autenticacao_arquivo/.htpasswd"

Referencias sobre Authentication

PHP Exemplo $_SERVER['PHP_AUTH_USER']

No formDin você pode pegar as informações do usuário logado usando

$user = ServerHelper::get('PHP_AUTH_USER')

Depois é só passar o usuário logado para os métodos que irão usar essa informação para fazer algo. Como : autorizar ou não acesso ao sistema, listar as telas por perfil de acesso, gravar os dados com o usuário logado e etc etc. O próximo capitulo irá te ajudar resolver o problema do perfil de acesso.

Próxima etapa ?

14 - Perfis de acesso

⚠️ **GitHub.com Fallback** ⚠️