PHP COMMUNITY SUMMIT 2018
EDUARDO CESAR
DESENVOLVEDOR WEB - ZARP
EXPLORANDO OS MECANISMOS
DE AUTENTICAÇÃO NA WEB
AUTENTICAR x AUTORIZAR
AUTENTICAR
AUTORIZAR
Authentication
Authentication is the process of verification that an individual, entity or website is
who it claims to be.
Authorization
Generally enforced on the basis of a user-specific policy, and authentication is the
way to establish the user in question.
OWASP
Dado um cenário onde vamos precisar autenticar
e autorizar acessos de nossos usuários tantos
em aplicações web tradicionais quanto em
nossas apis, quais conceitos e técnicas
podemos utilizar para resolver esse problema?
AUTENTICAÇÃO BASEADA EM COOKIES E
SESSÕES
Considerações
Com o bom suporte que o PHP provê para manipular cookies e sessões este
modelo é muito utilizado, como por exemplo session_start(), para iniciar uma
sessão e $_SESSION para manipular as váriaveis de sessão
Comumente os frameworks web fornecem uma abstração em forma de
componentes ou biblioteca para autenticação.
Só funciona para um domínio
Ferramentas
Agnóstica a framework
https://github.com/PHPAuth/PHPAuth
Para o Laravel
https://laravel.com/docs/5.6/authentication#introduction
Para o Symfony
https://symfony.com/doc/current/components/security/authentication.html#s
ecurity-events
BASIC AUTHENTICATION
Considerações
Extremamente simples realizar autenticação básica HTTP
Sua aplicação se mantém stateless uma vez que não há armazenamento algum
sobre estado
Toda a requisição que necessitar de autenticação deverá conter as credenciais e
posterior processo de autenticação
Ferramentas
Para o Laravel
https://laravel.com/docs/5.6/authentication#http-basic-authentication
Para o Symfony
https://symfony.com/doc/current/security.html#a-configuring-how-your-user
s-will-authenticate
MAS O QUE É UM TOKEN JWT ?
Considerações
É uma especificação descrita na na RFC 7519
Provê uma forma segura para troca de informações utilizando formato JSON
Trabalha com criptografia e faz usos de chaves simétricas e assimétricas
Nunca forneça dados sensíveis, ou se quer crie um token sem a definição de um
algoritmo em seu header
Ferramentas
Independente de frameworks
https://github.com/lcobucci/jwt
Para o Laravel
https://github.com/tymondesigns/jwt-auth
Para o Symfony
https://github.com/lexik/LexikJWTAuthenticationBundle
Open Authorization (OAuth) is a protocol that allows
an application to authenticate against a server as a
user, without requiring passwords or any third party
server that acts as an identity provider.
ELEMENTOS QUE COMPÕE O OAUTH
ELEMENTOS QUE COMPÕE O OAUTH
● Resource Owner
● Resource Server
● Client
● Authorization Server
Considerações
É uma especificação descrita na na RFC 6749
Provê um robusto mecanismo para autorização e acesso delegado a terceiros
Os tokens gerados podem ser do tipo JWT
É importante se atentar a qual versão do protocolo está sendo usada
Ferramentas
Independente de frameworks
https://github.com/thephpleague/oauth2-server
Para o Laravel
https://github.com/laravel/passport
Esteja atento…
Sempre filtrar e validar todo input e output do usuários
Nunca salve dados sensíveis em em tokens ou sessões
Nunca retorne erros das suas camadas de banco
Utilize códigos http adequadamente
Ainda sobre autenticação….
SSO Single Sing On
OPENID
Two factors auth
RE ÊN I
OWASP:
https://bit.ly/1Drghjd
https://bit.ly/1HgzS7M
HTTP BASIC:
https://bit.ly/2x51NLJ
JWT:
https://bit.ly/2pqH3M6
https://bit.ly/2p3PdYH
OAUTH:
https://bit.ly/2x9hnWs
https://do.co/1dOwetI
https://bit.ly/2MrmhTy
SING SIGN-ON:
https://bit.ly/2CTAI3k
https://bit.ly/2x9vTh4
https://bit.ly/2pbDfwh
TWO FACTOR AUTHENTICATION
https://bit.ly/2x51NLJ
OPEN ID:
https://ubm.io/2p4tYpy
https://bit.ly/2NJYWRI
OBRIGADO A TODOS!
EDUARDO CESAR
github.com/bolinha1
/in/eduardo-cesar-oliveira
eduardo.oliveira@zarpsystem.com.br
www.zarpsystem.com.br
ESTAMOS CONTRATANDO!!!

Explorando mecanismos autenticacao na web