Autenticação e
     autorização
PHP Advanced - 17 de Setembro de 2008
      Bruno Pedro <bpedro@tarpipe.com>
PHP Advanced




                             Conteúdo
  • Basic HTTP Auth
  • Bases de Dados
  • PEAR::Auth()
  • OpenID
...
PHP Advanced




             Basic HTTP Auth

  • Suportado pelo protocolo HTTP
  • Suportado pelo browser
  • Pode ser i...
PHP Advanced




               Como funciona?

  • Para aparecer a caixa de autenticação é
        enviado um header HTTP...
PHP Advanced




                             Exemplo




Autenticação e autorização      5
PHP Advanced




                             Exemplo




Autenticação e autorização      6
PHP Advanced




                             Logout




Autenticação e autorização     7
PHP Advanced




           Aproximação OO
                                  Auth
                             username
  ...
PHP Advanced




           Aproximação OO




Autenticação e autorização   9
PHP Advanced




           Aproximação OO




Autenticação e autorização   10
PHP Advanced




           Aproximação OO




Autenticação e autorização   11
PHP Advanced




           Aproximação OO




Autenticação e autorização   12
PHP Advanced




                             Melhorias
  • Criação de uma Auth factory
  • Acoplamento de um Chain of Com...
PHP Advanced




                Bases de Dados
  • Utilização de MySQL
  • Criação de base de dados para o projecto
  • C...
PHP Advanced




    Tabela de utilizadores
                                 Auth
                             username
  ...
PHP Advanced




                 Criar utilizador
  • A password não pode ficar visível!
  • É utilizada a função MD5
    ...
PHP Advanced




                             PEAR::DB
  • Biblioteca de abstracção ao acesso à base
        de dados
  • ...
PHP Advanced




                             Exemplo




Autenticação e autorização      18
PHP Advanced




              Modos de leitura

  • DB_FETCHMODE_ORDERED
  • DB_FETCHMODE_ASSOC
  • DB_FETCHMODE_OBJECT
 ...
PHP Advanced




                         PEAR::Auth
  • Biblioteca de gestão de autenticação
  • Permite autenticar contr...
PHP Advanced




                         PEAR::Auth
  • Containers:
   • Array: lista de utilizadores
   • Base de dados,...
PHP Advanced




                             Exemplo




Autenticação e autorização      22
PHP Advanced




                             Opções

  • Base de dados utilizada
  • Alteração do formulário de autentica...
PHP Advanced




                             Formulário
  • Desligar completamente o formulário de
        autenticação:
...
PHP Advanced




        Nomes dos campos

  • Correspondem aos nomes dos campos
       utilizados no formulário de autent...
PHP Advanced




                             OpenID
  • Solução de autenticação sem utilizar
        password
  • Utiliza...
PHP Advanced




                                    OpenID
                             Utilizador                     Ut...
PHP Advanced




                             OpenID
  • Implementação
   • Eliminação dos campos username e
            p...
PHP Advanced




                             OpenID
  • Algumas regras
   • Convém separar o registo da
            auten...
PHP Advanced




                  Base de Dados
                                  Auth
                             openi...
PHP Advanced




                             Bibliotecas

  • http://openidenabled.com/php-openid/
   • Compatível com PH...
PHP Advanced




                             Projecto

  • Funcionalidade de registo
   • Alteração da tabela de modo a a...
PHP Advanced




                             Projecto
  • Autenticação
   • Utilização do PEAR::Auth para autenticar
    ...
PHP Advanced




                             Resumo

  • Basic HTTP Auth
  • Aproximação OO
  • PEAR::DB
  • PEAR::Auth
 ...
PHP Summer School




                    Questões?




OOP em PHP              35
PHP Advanced




               Mais informação
  • O meu blog: http://unfoldingtheweb.com/

  • Manual de PHP: http://www...
Próximos SlideShares
Carregando em…5
×

Autenticação e Autorização (in portuguese)

2.479 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.479
No SlideShare
0
A partir de incorporações
0
Número de incorporações
22
Ações
Compartilhamentos
0
Downloads
66
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Autenticação e Autorização (in portuguese)

  1. 1. Autenticação e autorização PHP Advanced - 17 de Setembro de 2008 Bruno Pedro <bpedro@tarpipe.com>
  2. 2. PHP Advanced Conteúdo • Basic HTTP Auth • Bases de Dados • PEAR::Auth() • OpenID • Projecto • Resumo Autenticação e autorização 2
  3. 3. 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 Autenticação e autorização 3
  4. 4. 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 Autenticação e autorização 4
  5. 5. PHP Advanced Exemplo Autenticação e autorização 5
  6. 6. PHP Advanced Exemplo Autenticação e autorização 6
  7. 7. PHP Advanced Logout Autenticação e autorização 7
  8. 8. PHP Advanced Aproximação OO Auth username password login() logout() isAuth() HTTPAuth Autenticação e autorização 8
  9. 9. PHP Advanced Aproximação OO Autenticação e autorização 9
  10. 10. PHP Advanced Aproximação OO Autenticação e autorização 10
  11. 11. PHP Advanced Aproximação OO Autenticação e autorização 11
  12. 12. PHP Advanced Aproximação OO Autenticação e autorização 12
  13. 13. 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 Autenticação e autorização 13
  14. 14. 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 Autenticação e autorização 14
  15. 15. PHP Advanced Tabela de utilizadores Auth username password 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 15
  16. 16. PHP Advanced Criar utilizador • A password não pode ficar visível! • É utilizada a função MD5 INSERT INTO auth VALUES ('test', MD5('abc123')); Autenticação e autorização 16
  17. 17. 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 Autenticação e autorização 17
  18. 18. PHP Advanced Exemplo Autenticação e autorização 18
  19. 19. PHP Advanced Modos de leitura • DB_FETCHMODE_ORDERED • DB_FETCHMODE_ASSOC • DB_FETCHMODE_OBJECT • DB_FETCHMODE_FLIPPED Autenticação e autorização 19
  20. 20. 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 Autenticação e autorização 20
  21. 21. PHP Advanced PEAR::Auth • Containers: • Array: lista de utilizadores • Base de dados, através de PEAR::DB • Ficheiro em disco • POP3, IMAP • SOAP Autenticação e autorização 21
  22. 22. PHP Advanced Exemplo Autenticação e autorização 22
  23. 23. PHP Advanced Opções • Base de dados utilizada • Alteração do formulário de autenticação • Nomes dos campos username e password • Logging Autenticação e autorização 23
  24. 24. PHP Advanced Formulário • Desligar completamente o formulário de autenticação: • Definir uma função responsável por apresentar o formulário: Autenticação e autorização 24
  25. 25. PHP Advanced Nomes dos campos • Correspondem aos nomes dos campos utilizados no formulário de autenticação Autenticação e autorização 25
  26. 26. 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. Autenticação e autorização 26
  27. 27. PHP Advanced OpenID Utilizador Utilizador é introduz o URL redireccionado para o OpenID OpenID server Utilizador é A identidade é redireccionado para a SIM confirmada? aplicação original NÃO Utilizador é autenticado Mensagem de erro na aplicação original Autenticação e autorização 27
  28. 28. 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 Autenticação e autorização 28
  29. 29. 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 Autenticação e autorização 29
  30. 30. PHP Advanced Base de Dados Auth openid_url firstName lastName ... • Podem ser acrescentados mais campos, relacionados com o utilizador Autenticação e autorização 30
  31. 31. 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 Autenticação e autorização 31
  32. 32. 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 Autenticação e autorização 32
  33. 33. 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 Autenticação e autorização 33
  34. 34. PHP Advanced Resumo • Basic HTTP Auth • Aproximação OO • PEAR::DB • PEAR::Auth • OpenID Autenticação e autorização 34
  35. 35. PHP Summer School Questões? OOP em PHP 35
  36. 36. PHP Advanced Mais informação • 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/ Autenticação e autorização 36

×