Autenticação e Autorização (in portuguese)
-
Upload
bruno-pedro -
Category
Technology
-
view
4.171 -
download
6
description
Transcript of Autenticação e Autorização (in portuguese)
Autenticação e autorização
PHP Advanced
Conteúdo
• Basic HTTP Auth
• Bases de Dados
• PEAR::Auth()
• OpenID
• Projecto
• Resumo
2
Autenticação e autorização
PHP Advanced
Basic HTTP Auth
• Suportado pelo protocolo HTTP
• Suportado pelo browser
• Pode ser interceptado no PHP
• Só funciona se o PHP estiver a correr como módulo Apache
3
Autenticação e autorização
PHP Advanced
Como funciona?
• Para aparecer a caixa de autenticação é enviado um header HTTP “Unauthorized”
• Os dados inseridos são capturados nos índices PHP_AUTH_USER, PHP_AUTH_PW, e AUTH_TYPE do array $_SERVER
4
Autenticação e autorização
PHP Advanced
Exemplo
5
Autenticação e autorização
PHP Advanced
Exemplo
6
Autenticação e autorização
PHP Advanced
Logout
7
Autenticação e autorização
PHP Advanced
Aproximação OO
8
login()logout()isAuth()
usernamepassword
Auth
HTTPAuth
Autenticação e autorização
PHP Advanced
Aproximação OO
9
Autenticação e autorização
PHP Advanced
Aproximação OO
10
Autenticação e autorização
PHP Advanced
Aproximação OO
11
Autenticação e autorização
PHP Advanced
Aproximação OO
12
Autenticação e autorização
PHP Advanced
Melhorias
• Criação de uma Auth factory
• Acoplamento de um Chain of Command para verificar se o utilizador se pode autenticar
• Utilização de uma Strategy de acesso a um backend onde estão os dados dos utilizadores
13
Autenticação e autorização
PHP Advanced
Bases de Dados• Utilização de MySQL
• Criação de base de dados para o projecto
• Criação de tabela de utilizadores
• Verificações
• username existe
• password é igual
• Possível gravação de informação adicional
14
Autenticação e autorização
PHP Advanced
Tabela de utilizadores
15
username
password
Auth
CREATE TABLE auth ( username VARCHAR(50) default '' NOT NULL, password VARCHAR(32) default '' NOT NULL, PRIMARY KEY (username), KEY (password));
Autenticação e autorização
PHP Advanced
Criar utilizador
• A password não pode ficar visível!
• É utilizada a função MD5
16
INSERTINTO authVALUES ('test', MD5('abc123'));
Autenticação e autorização
PHP Advanced
PEAR::DB
• Biblioteca de abstracção ao acesso à base de dados
• Portabilidade entre vários motores de BD
• Várias formas de obter resultados
• Automatismos na escrita de valores
• Instalação: pear install DB
17
Autenticação e autorização
PHP Advanced
Exemplo
18
Autenticação e autorização
PHP Advanced
Modos de leitura
• DB_FETCHMODE_ORDERED
• DB_FETCHMODE_ASSOC
• DB_FETCHMODE_OBJECT
• DB_FETCHMODE_FLIPPED
19
Autenticação e autorização
PHP Advanced
PEAR::Auth
• Biblioteca de gestão de autenticação
• Permite autenticar contra uma série de backends
• Possibilita o registo e a gravação de informação adicional em cada utilizador
• Oferece capacidades de logging
• Instalação: pear install Auth
20
Autenticação e autorização
PHP Advanced
PEAR::Auth
• Containers:
• Array: lista de utilizadores
• Base de dados, através de PEAR::DB
• Ficheiro em disco
• POP3, IMAP
• SOAP
21
Autenticação e autorização
PHP Advanced
Exemplo
22
Autenticação e autorização
PHP Advanced
Opções
• Base de dados utilizada
• Alteração do formulário de autenticação
• Nomes dos campos username e password
• Logging
23
Autenticação e autorização
PHP Advanced
Formulário• Desligar completamente o formulário de
autenticação:
• Definir uma função responsável por apresentar o formulário:
24
Autenticação e autorização
PHP Advanced
Nomes dos campos
25
• Correspondem aos nomes dos campos utilizados no formulário de autenticação
Autenticação e autorização
PHP Advanced
OpenID
• Solução de autenticação sem utilizar password
• Utilização do mesmo identificador entre vários Websites
• Obtenção de dados do utilizador
• nome, email, nickname, etc.
26
Autenticação e autorização
PHP Advanced
OpenID
27
Utilizador introduz o URL
OpenID
Utilizador é redireccionado para o
OpenID server
A identidade é confirmada?
Utilizador é redireccionado para a
aplicação original
Utilizador é autenticado na aplicação original
Mensagem de erro
SIM
NÃO
Autenticação e autorização
PHP Advanced
OpenID
• Implementação
• Eliminação dos campos username e password
• Inserção do campo openid_url
• Implementação da lógica de redireccionamento e validação
28
Autenticação e autorização
PHP Advanced
OpenID
• Algumas regras
• Convém separar o registo da autenticação, mesmo utilizando OpenID
• É necessário validar a identidade no acto de registo
• O openid_url passa a ser a chave que identifica um utilizador na aplicação
29
Autenticação e autorização
PHP Advanced
Base de Dados
• Podem ser acrescentados mais campos, relacionados com o utilizador
30
openid_urlfirstNamelastName...
Auth
Autenticação e autorização
PHP Advanced
Bibliotecas
• http://openidenabled.com/php-openid/
• Compatível com PHP 4.3.0 e superiores
• Documentação, exemplos e testes
• Tenta usar o Curl mas não é obrigatório
• Live demos
31
Autenticação e autorização
PHP Advanced
Projecto
• Funcionalidade de registo
• Alteração da tabela de modo a albergar o nome do utilizador
• Verificação da password
• Gravação dos dados na tabela
32
Autenticação e autorização
PHP Advanced
Projecto
• Autenticação
• Utilização do PEAR::Auth para autenticar o utilizador contra a tabela
• Obtenção do username e password a partir do formulário
• Implementação da funcionalidade de logout
33
Autenticação e autorização
PHP Advanced
Resumo
• Basic HTTP Auth
• Aproximação OO
• PEAR::DB
• PEAR::Auth
• OpenID
34
OOP em PHP
PHP Summer School
Questões?
35
Autenticação e autorização
PHP Advanced
Mais informação
36
• O meu blog: http://unfoldingtheweb.com/
• Manual de PHP: http://www.php.net/
• PEAR: http://pear.php.net/
• OpenID: http://openid.net/
• Bibliotecas OpenID:
http://openidenabled.com/