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

2,421 views
2,290 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,421
On SlideShare
0
From Embeds
0
Number of Embeds
22
Actions
Shares
0
Downloads
66
Comments
0
Likes
2
Embeds 0
No embeds

No notes for 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

×