SlideShare a Scribd company logo
1 of 34
Download to read offline
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!!!

More Related Content

Similar to Explorando mecanismos autenticacao na web

JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2Rodrigo Cândido da Silva
 
TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2Rodrigo Cândido da Silva
 
OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014
OAuth2: Uma abordagem para segurança de aplicações e APIs REST  - Devcamp 2014OAuth2: Uma abordagem para segurança de aplicações e APIs REST  - Devcamp 2014
OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014Tiago Marchetti Dolphine
 
Manipulando JWT em apis Laravel
Manipulando JWT em apis LaravelManipulando JWT em apis Laravel
Manipulando JWT em apis LaravelEduardo Cesar
 
Segurança e automação na Amazon: Lições das trincheiras
Segurança e automação na Amazon: Lições das trincheirasSegurança e automação na Amazon: Lições das trincheiras
Segurança e automação na Amazon: Lições das trincheirasBruno Luiz Pereira da Silva
 
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...tdc-globalcode
 
Robot Framework no DevTests #34
Robot Framework no DevTests #34Robot Framework no DevTests #34
Robot Framework no DevTests #34Mayara Fernandes
 
#TheDevConf 2018 - spring boot ionic oauth2
#TheDevConf 2018 - spring boot ionic oauth2#TheDevConf 2018 - spring boot ionic oauth2
#TheDevConf 2018 - spring boot ionic oauth2Luiz Avila
 
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2tdc-globalcode
 
Blockchain como serviço no azure
Blockchain como serviço no azureBlockchain como serviço no azure
Blockchain como serviço no azureVagner Oliveira
 
Gerência de identidades federadas em nuvens
Gerência de identidades federadas em nuvensGerência de identidades federadas em nuvens
Gerência de identidades federadas em nuvensjarddel
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EELuan Felipe Knebel
 
Introdução ASP.NET Core
Introdução ASP.NET CoreIntrodução ASP.NET Core
Introdução ASP.NET Corelacerda2
 
Apresentação sobre blockchain, executada no mestrado de ciencia da computação
Apresentação sobre blockchain, executada no mestrado de ciencia da computaçãoApresentação sobre blockchain, executada no mestrado de ciencia da computação
Apresentação sobre blockchain, executada no mestrado de ciencia da computaçãoManoelGuilherme2
 
São Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom PolicesSão Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom PolicesGuilherme Pereira Silva
 
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...tdc-globalcode
 
Identity Server 4 com ASP.NET Core 2
Identity Server 4 com ASP.NET Core 2Identity Server 4 com ASP.NET Core 2
Identity Server 4 com ASP.NET Core 2Ericson da Fonseca
 

Similar to Explorando mecanismos autenticacao na web (20)

JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
 
TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2
 
Certificados SSL e Let's Encrypt
Certificados SSL e Let's EncryptCertificados SSL e Let's Encrypt
Certificados SSL e Let's Encrypt
 
Segurança em Angular SPA
Segurança em Angular SPASegurança em Angular SPA
Segurança em Angular SPA
 
OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014
OAuth2: Uma abordagem para segurança de aplicações e APIs REST  - Devcamp 2014OAuth2: Uma abordagem para segurança de aplicações e APIs REST  - Devcamp 2014
OAuth2: Uma abordagem para segurança de aplicações e APIs REST - Devcamp 2014
 
Manipulando JWT em apis Laravel
Manipulando JWT em apis LaravelManipulando JWT em apis Laravel
Manipulando JWT em apis Laravel
 
Segurança e automação na Amazon: Lições das trincheiras
Segurança e automação na Amazon: Lições das trincheirasSegurança e automação na Amazon: Lições das trincheiras
Segurança e automação na Amazon: Lições das trincheiras
 
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
 
Robot Framework no DevTests #34
Robot Framework no DevTests #34Robot Framework no DevTests #34
Robot Framework no DevTests #34
 
#TheDevConf 2018 - spring boot ionic oauth2
#TheDevConf 2018 - spring boot ionic oauth2#TheDevConf 2018 - spring boot ionic oauth2
#TheDevConf 2018 - spring boot ionic oauth2
 
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
 
Blockchain como serviço no azure
Blockchain como serviço no azureBlockchain como serviço no azure
Blockchain como serviço no azure
 
Gerência de identidades federadas em nuvens
Gerência de identidades federadas em nuvensGerência de identidades federadas em nuvens
Gerência de identidades federadas em nuvens
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EE
 
Introdução ASP.NET Core
Introdução ASP.NET CoreIntrodução ASP.NET Core
Introdução ASP.NET Core
 
Apresentação sobre blockchain, executada no mestrado de ciencia da computação
Apresentação sobre blockchain, executada no mestrado de ciencia da computaçãoApresentação sobre blockchain, executada no mestrado de ciencia da computação
Apresentação sobre blockchain, executada no mestrado de ciencia da computação
 
São Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom PolicesSão Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
 
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
 
Identity Server 4 com ASP.NET Core 2
Identity Server 4 com ASP.NET Core 2Identity Server 4 com ASP.NET Core 2
Identity Server 4 com ASP.NET Core 2
 
Politicas de segurança
Politicas de segurançaPoliticas de segurança
Politicas de segurança
 

More from Eduardo Cesar

Vida longa ao legado
Vida longa ao legadoVida longa ao legado
Vida longa ao legadoEduardo Cesar
 
Uma linha tênue entre arquitetura de software e o dia a dia dev
Uma linha tênue entre arquitetura de software e o dia a dia devUma linha tênue entre arquitetura de software e o dia a dia dev
Uma linha tênue entre arquitetura de software e o dia a dia devEduardo Cesar
 
OOP, e uma visão que está além de classes e métodos
OOP, e uma visão que está além de classes e métodosOOP, e uma visão que está além de classes e métodos
OOP, e uma visão que está além de classes e métodosEduardo Cesar
 
Arquitetando aplicações php
Arquitetando aplicações phpArquitetando aplicações php
Arquitetando aplicações phpEduardo Cesar
 
Arquitetando sistemas PHP
Arquitetando sistemas PHPArquitetando sistemas PHP
Arquitetando sistemas PHPEduardo Cesar
 
Desbabravando linguagem GO
Desbabravando linguagem GODesbabravando linguagem GO
Desbabravando linguagem GOEduardo Cesar
 
Integrando aplicações, o que temos nas fronteiras dos microservices
Integrando aplicações, o que temos nas fronteiras dos microservicesIntegrando aplicações, o que temos nas fronteiras dos microservices
Integrando aplicações, o que temos nas fronteiras dos microservicesEduardo Cesar
 
Mantendo a plenitude do seu novo legado com code-refactoring
Mantendo a plenitude do seu novo legado com code-refactoringMantendo a plenitude do seu novo legado com code-refactoring
Mantendo a plenitude do seu novo legado com code-refactoringEduardo Cesar
 
Desenvolvendor aplicações real time com PHP
Desenvolvendor aplicações real time com PHPDesenvolvendor aplicações real time com PHP
Desenvolvendor aplicações real time com PHPEduardo Cesar
 
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicação
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicaçãoRefatoração e uma vida saudável para o desenvolvedor e para sua aplicação
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicaçãoEduardo Cesar
 
Porque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnicoPorque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnicoEduardo Cesar
 
Do monolito ao microservico
Do monolito ao microservicoDo monolito ao microservico
Do monolito ao microservicoEduardo Cesar
 
Interagindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHPInteragindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHPEduardo Cesar
 
Uma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro servicesUma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro servicesEduardo Cesar
 

More from Eduardo Cesar (14)

Vida longa ao legado
Vida longa ao legadoVida longa ao legado
Vida longa ao legado
 
Uma linha tênue entre arquitetura de software e o dia a dia dev
Uma linha tênue entre arquitetura de software e o dia a dia devUma linha tênue entre arquitetura de software e o dia a dia dev
Uma linha tênue entre arquitetura de software e o dia a dia dev
 
OOP, e uma visão que está além de classes e métodos
OOP, e uma visão que está além de classes e métodosOOP, e uma visão que está além de classes e métodos
OOP, e uma visão que está além de classes e métodos
 
Arquitetando aplicações php
Arquitetando aplicações phpArquitetando aplicações php
Arquitetando aplicações php
 
Arquitetando sistemas PHP
Arquitetando sistemas PHPArquitetando sistemas PHP
Arquitetando sistemas PHP
 
Desbabravando linguagem GO
Desbabravando linguagem GODesbabravando linguagem GO
Desbabravando linguagem GO
 
Integrando aplicações, o que temos nas fronteiras dos microservices
Integrando aplicações, o que temos nas fronteiras dos microservicesIntegrando aplicações, o que temos nas fronteiras dos microservices
Integrando aplicações, o que temos nas fronteiras dos microservices
 
Mantendo a plenitude do seu novo legado com code-refactoring
Mantendo a plenitude do seu novo legado com code-refactoringMantendo a plenitude do seu novo legado com code-refactoring
Mantendo a plenitude do seu novo legado com code-refactoring
 
Desenvolvendor aplicações real time com PHP
Desenvolvendor aplicações real time com PHPDesenvolvendor aplicações real time com PHP
Desenvolvendor aplicações real time com PHP
 
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicação
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicaçãoRefatoração e uma vida saudável para o desenvolvedor e para sua aplicação
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicação
 
Porque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnicoPorque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnico
 
Do monolito ao microservico
Do monolito ao microservicoDo monolito ao microservico
Do monolito ao microservico
 
Interagindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHPInteragindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHP
 
Uma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro servicesUma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro services
 

Explorando mecanismos autenticacao na web