SlideShare uma empresa Scribd logo
1 de 29
Segurança em Microsserviços
Autenticação e Autorização com OAuth2, Spring Security, OpenID,
Keycloak e JWT token.
Quem sou?
Cléber da Silveira
• Arquiteto de software na DBServer.
• Especialista Java.
• Entusiasta DevOps e Cloud
Computing.
• Surfista?
• Problemas com segurança em microserviços;
• Autenticação e Autorização em contâiners web;
• Entendendo OAuth2;
• Entendendo o OpenID;
• Configurando Spring Security;
• Entendendo o KeyCloack;
• Como trabalhar com JWT Token;
• Demo.
Agenda
• Como identificar, criar e separar as permissões de acesso ?
• Como identificar os perfis e fluxos de sistema para diferentes usuários ?
• Quais informações de segurança devem ser compartilhas entre diferentes Api's ?
• Quais URL's devem ser públicas e quais URL's devem ser privadas ?
• Qual o tempo ideal de uma sessão ?
• Como a autenticação auxilia na monetização de API's ?
Problemas
Autenticação Autorização
• Processo de identificação de uma identidade
alegada;
• Validação de credenciais;
• Processos distintos de acesso:
oUsuário e senha;
oBiometria;
oReconhecimento facial;
• Fatores de autenticação:
oO que o usuário é?
oO que o usuário tem?
oO que o usuário conhece?
• Geralmente utiliza-se autenticação de dois fatores.
Autenticação
• Validar privilégios de um usuário previamente
autenticado;
• Tem a função de definir o que um usuário pode fazer no
sistema;
• Valida a periodicidade do tempo que o usuário estará
habilitado a fazer;
• Necessidade de um parceiro para busca de permissões;
• Atua sempre em combinação com a autenticação.
Autorização
• O OAuth2 é o protocolo de autorização mais utilizado em
aplicações web no mundo;
• Utiliza tokens para acessar seus dados em sistemas distribuídos;
• OAuth foi criado para remover a necessidade de os usuários
compartilharem suas senhas com aplicativos de terceiros;
• Usa os Protocolo de autorização como Open ID
Connect, UMA, Green Button e Blue;
• Integração de TLS/SSL;
• Modelo de delegação;
• Fornece o trecho do token denominado access_token.
OAuth2
OAuth2 – Quem usa?
OAuth2 Flow
• OpenID é um padrão aberto e um protocolo de autenticação
descentralizado;
• Possibilidade de compartilhamento de informações de usuários e
contas entre sistemas;
• OpenID foi criado para autenticação federada, ou seja, deixando um
terceiro autenticar seus usuários para você, usando contas que já
possuem;
• Uma única conta e senha para login;
• Fornece o trecho de de token chamado id_token;
• Rápida adoção da comunidade;
• 1 bilhão de contas habilitadas para login;
• 50.000 sistemas habilitados para login via OpenID.
OpenID
OpenID
Spring Security e OAuth2
• Segurança através de papéis;
• Controle facilitado via Annotations;
• Trabalho simplificado para realizar autenticação e autorização;
• Suporte a inúmeros modelos de autenticação;
• Projeto open-source.
Spring Security e OAuth2
Spring Security e OAuth2
• O Keycloak é uma solução open source de gerenciamento de identidade e
acesso voltada para aplicações e serviços modernos;
• Facilita a segurança de aplicativos e serviços com pouco ou nenhum código;
• Autenticação integrado com o protocolo OpenId;
• Autorização com Tokens de Acesso e autorização;
• Single Sign On;
• Session Management;
• Auditoria, Regras e Grupos.
KeyCloak
• Single-Sign On - Uma vez conectado ao Keycloak, os usuários não
precisam se conectar novamente para acessar uma aplicação
diferente;
• Isso também se aplica ao logout;
• Keycloak fornece saída única, o que significa que os usuários só
precisam sair uma vez para serem desconectados de todos os
aplicativos que usam o Keycloak.
KeyCloak
• Social Login - Keycloak também pode autenticar usuários com os provedores
de identidade OpenID Connect ou SAML 2.0 existentes como redes sociais;
• Suporte incorporado para se conectar a servidores LDAP ou Active Directory
existentes. Você também pode implementar seu próprio provedor se você
tiver usuários em outras lojas, como um banco de dados relacionais.
KeyCloak
• JSON Web Token (JWT) é um padrão aberto (RFC 7519) que define uma
maneira compacta e autônoma para transmitir de forma segura informações
entre as partes como um objeto JSON;
• Esta informação pode ser verificada e confiável porque está assinada
digitalmente. JWTs podem ser assinados usando um segredo (com o
algoritmo HMAC) ou um par de chaves público / privado usando RSA;
• Estrutura dividida em três partes Header, Payload e Signature.
JWT Token
JWT Token
JWT Token
{"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIyTWhzS0xHS2ZRbHJxNlkyc3pFcHVtVm1rR2Y4MmZXTVN6NlJLcnhac3BBIn0.eyJqdGkiOiI4MGU0ZDZlZS1hYzc1LTRlY2Y
tYmZlMi1kN2Q3MmE0ZWU2MmIiLCJleHAiOjE0OTk4Nzk5NDYsIm5iZiI6MCwiaWF0IjoxNDk5ODc5MzQ2LCJpc3MiOiJodHRwOi8vb2F1dGgtaGxnLmUtdW5pY3JlZC5jb20uYnIvYXV0aC9yZWFs
bXMvVW5pY3JlZFJlYWxtIiwiYXVkIjoiaGxnLWNsaWVudCIsInN1YiI6ImRjNGM5ZGNhLWM3ODEtNGI4OC1hZmFhLTZjNGZjYmEwNzkyZCIsInR5cCI6IkJlYXJlciIsImF6cCI6ImhsZy1jbGllbnQiLCJhdX
RoX3RpbWUiOjAsInNlc3Npb25fc3RhdGUiOiIwMzNkMGE0Mi0yODgzLTRkOGMtYTU1MS1kMzQ2NjllN2E3OTEiLCJhY3IiOiIxIiwiY2xpZW50X3Nlc3Npb24iOiI5NzU1OGU0NS0zNjhkLTQ3NmYt
ODVhNy0zYjkxMWU2MjgxMjkiLCJhbGxvd2VkLW9yaWdpbnMiOltdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsiUk9MRV9BRE1JTiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9
sZXMiOlsibWFuYWdlLWFjY291bnQiLCJ2aWV3LXByb2ZpbGUiXX19LCJuYW1lIjoiIiwiZGlzdGluZ3Vpc2hlZE5hbWUiOiJDTj1jYW1pbGEsT1U9MDU2NixPVT1TaXRlMSxPVT1Qcm9kdWNhbyxPVT
1Vc3VhcmlvcyxPVT1UUyxEQz1lLXVuaWNyZWRob21vbG9nLERDPWNvbSxEQz1iciIsInByZWZlcnJlZF91c2VybmFtZSI6ImNhbWlsYS4wNTY2In0.q5phgC7d60djejaBCaEmJ1oMjXJHm5y_5oYup
QMh03KbpBpK-Q1OITgl21nMfc6-7r8zwy4Uq81BrBI_9W37yYhRmnAauRvJEGpQSMMKCboKTLbS17OqAB-
KHUT4pkxH7u3baMBKFll2TjsjYFGLL7fweq_4I7FSkScmQSzIfNDSSQGxlbC18FQpOpMIQcLkqEXr4tW5--
4bcQfAO96uGyJKrEs1tsH6qopQGCbSNvqKc4ttyYpPQf5PYJQMKwGkhaJ89QGVaD4vOisv3DP1B1megBbymr2Kp6GTyHWJZOPWt2b58cNi2XdvG2KGeSo9I2E6v9Y1wDk1ecdIBKepzA","expire
s_in":600,"refresh_expires_in":1800,"refresh_token":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIyTWhzS0xHS2ZRbHJxNlkyc3pFcHVtVm1rR2Y4MmZXTVN6NlJLcnhac3BBIn0.eyJ
qdGkiOiJhNGEzMmUzZi0zMzJlLTQxODUtYjY3Zi05M2Y1YjIxNjhjNzkiLCJleHAiOjE0OTk4ODExNDYsIm5iZiI6MCwiaWF0IjoxNDk5ODc5MzQ2LCJpc3MiOiJodHRwOi8vb2F1dGgtaGxnLmUtdW5p
Y3JlZC5jb20uYnIvYXV0aC9yZWFsbXMvVW5pY3JlZFJlYWxtIiwiYXVkIjoiaGxnLWNsaWVudCIsInN1YiI6ImRjNGM5ZGNhLWM3ODEtNGI4OC1hZmFhLTZjNGZjYmEwNzkyZCIsInR5cCI6IlJlZnJlc2gi
LCJhenAiOiJobGctY2xpZW50IiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiMDMzZDBhNDItMjg4My00ZDhjLWE1NTEtZDM0NjY5ZTdhNzkxIiwiY2xpZW50X3Nlc3Npb24iOiI5NzU1OGU0
NS0zNjhkLTQ3NmYtODVhNy0zYjkxMWU2MjgxMjkiLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsiUk9MRV9BRE1JTiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFu
YWdlLWFjY291bnQiLCJ2aWV3LXByb2ZpbGUiXX19fQ.DaJdZFKW_9uFonAsjhseiYqfzDO2BjCRrHIKqWWaF7ZjRiQwemQWd48p_pyt-
BL00EQLKTzSuE7St1w5pk291MY1X1ywpxyNdp1RLcDufQGJMwcgTNjnmUg4DL2MX34cbGEikHJWvUQ8WaS26yJl-a-SeVcgNvGUFWjGwm6rV2p63Yw67yFa2-
wDoca3Og5SPKTDmeALQh1rsiqyXh4UK008f83QvIs-
NAnAY5_rjYoKAVoCs8xt2a3eXhak02WtFCsfkomcYzuNKIkCw7CFKb23wC4JQuD3j0VrnSSdAOXPKN2n1nexpWStaLaN2pSpQ5ZKaCja_c4AA8UTN6OgTw","token_type":"bearer","id_token":"
eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIyTWhzS0xHS2ZRbHJxNlkyc3pFcHVtVm1rR2Y4MmZXTVN6NlJLcnhac3BBIn0.eyJqdGkiOiJhOTJiYzRjZS1hZTM2LTQ2MWUtOWVkYy02OD
dmNDkwMjk2NzIiLCJleHAiOjE0OTk4Nzk5NDYsIm5iZiI6MCwiaWF0IjoxNDk5ODc5MzQ2LCJpc3MiOiJodHRwOi8vb2F1dGgtaGxnLmUtdW5pY3JlZC5jb20uYnIvYXV0aC9yZWFsbXMvVW5pY3JlZ
FJlYWxtIiwiYXVkIjoiaGxnLWNsaWVudCIsInN1YiI6ImRjNGM5ZGNhLWM3ODEtNGI4OC1hZmFhLTZjNGZjYmEwNzkyZCIsInR5cCI6IklEIiwiYXpwIjoiaGxnLWNsaWVudCIsImF1dGhfdGltZSI6MCwi
c2Vzc2lvbl9zdGF0ZSI6IjAzM2QwYTQyLTI4ODMtNGQ4Yy1hNTUxLWQzNDY2OWU3YTc5MSIsImFjciI6IjEiLCJuYW1lIjoiIiwiZGlzdGluZ3Vpc2hlZE5hbWUiOiJDTj1jYW1pbGEsT1U9MDU2NixPVT1
TaXRlMSxPVT1Qcm9kdWNhbyxPVT1Vc3VhcmlvcyxPVT1UUyxEQz1lLXVuaWNyZWRob21vbG9nLERDPWNvbSxEQz1iciIsInByZWZlcnJlZF91c2VybmFtZSI6ImNhbWlsYS4wNTY2In0.cPdAaW04
W5sxutscyQolpR74UbYx7s_XfDHzDXU3GXvPVlr5GZxygB2cR4OcvdUsbhxmdYXCDk1SYI95H8_ywE25KwFBid-hFNPJcX1q9gBDOVau5niLX267VBsAMaCLBJ5O-
SBK_6crlLCvbxbAm1ktzvYpsoUAP52SvQJOkH5pZ2rsh0DDprDER7zekicQ2OV0dN53a_9SUCL9v_fNpa0tc4F4K3DIxbsgtcU5s7DEXnOAr9EuRR0huGSSlTDbICL-
bUxjpCMv2lHwet6VFDMshoL1LX0tHL2vHWVgyNAPJvHdUncNZ9rBQHTk7xAovHwBRI5i0AHVPWY3IduKWw","not-before-policy":1496406613,"session_state":"033d0a42-2883-4d8c-a551-
d34669e7a791"}
Bearer Token JWT
Bearer Token JWT
• Possui 34 cooperativas;
• 230 unidades de negócios;
• Presente em 10 estados brasileiros;
• 04 unidades centrais;
• 180 mil cooperados;
• 01 confederação nacional.
Case
https://github.com/csilveir/
Dúvidas ?
www.keycloak.org
www.jwt.io
http://spring.io
http://openid.net
http://oauth.net/2
Referências
clebers@dbserver.com.br
https://www.linkedin.com/in/cleber-da-silveira-b24b0920
@clsilveir
Obrigado!

Mais conteúdo relacionado

Semelhante a TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we had a SRE team at - Authentication and Autorization with OAuth2, Spring Security, OpenID, Keycloak and JWT token

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
 
Explorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webExplorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webEduardo Cesar
 
Rest seguro com keycloak e wildfly swarm
Rest seguro com keycloak e wildfly swarmRest seguro com keycloak e wildfly swarm
Rest seguro com keycloak e wildfly swarmPedro Henrique
 
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
 
Mule pe salesforce mule security
Mule pe   salesforce mule securityMule pe   salesforce mule security
Mule pe salesforce mule securityJeison Barros
 
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
 
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOpsGUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOpsRodrigo Cândido da Silva
 
TDC Connections 2021 – Trilha Software Security - Proteção de dados sensíveis...
TDC Connections 2021 – Trilha Software Security - Proteção de dados sensíveis...TDC Connections 2021 – Trilha Software Security - Proteção de dados sensíveis...
TDC Connections 2021 – Trilha Software Security - Proteção de dados sensíveis...Walter Coan
 
TDC2021 Innovation - Proteção de dados sensíveis com a computação confidencia...
TDC2021 Innovation - Proteção de dados sensíveis com a computação confidencia...TDC2021 Innovation - Proteção de dados sensíveis com a computação confidencia...
TDC2021 Innovation - Proteção de dados sensíveis com a computação confidencia...Walter Coan
 
Glossario
Glossario Glossario
Glossario vds06
 
Palestra Joomla Day Brasil 2014 - Extensão de Webservice para Joomla 3
Palestra Joomla Day Brasil 2014 - Extensão de Webservice para Joomla 3Palestra Joomla Day Brasil 2014 - Extensão de Webservice para Joomla 3
Palestra Joomla Day Brasil 2014 - Extensão de Webservice para Joomla 3Johnny Salazar Reidel
 
A tecnologia “blockchain” aplicada ao Registro Imobiliário
A tecnologia “blockchain” aplicada ao Registro ImobiliárioA tecnologia “blockchain” aplicada ao Registro Imobiliário
A tecnologia “blockchain” aplicada ao Registro ImobiliárioIRIB
 
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
 
Governança de Ambientes Heterogêneos - Single Sign-On para Servidores
Governança de Ambientes Heterogêneos - Single Sign-On para ServidoresGovernança de Ambientes Heterogêneos - Single Sign-On para Servidores
Governança de Ambientes Heterogêneos - Single Sign-On para ServidoresVirtù Tecnológica
 
Integrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumIntegrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumMario Guedes
 
Integrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumIntegrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumArrayOf.io
 

Semelhante a TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we had a SRE team at - Authentication and Autorization with OAuth2, Spring Security, OpenID, Keycloak and JWT token (20)

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
 
Explorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webExplorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na web
 
Rest seguro com keycloak e wildfly swarm
Rest seguro com keycloak e wildfly swarmRest seguro com keycloak e wildfly swarm
Rest seguro com keycloak e wildfly swarm
 
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
 
Mule pe salesforce mule security
Mule pe   salesforce mule securityMule pe   salesforce mule security
Mule pe salesforce mule security
 
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
 
Certificados Digitais
Certificados DigitaisCertificados Digitais
Certificados Digitais
 
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOpsGUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
 
TDC Connections 2021 – Trilha Software Security - Proteção de dados sensíveis...
TDC Connections 2021 – Trilha Software Security - Proteção de dados sensíveis...TDC Connections 2021 – Trilha Software Security - Proteção de dados sensíveis...
TDC Connections 2021 – Trilha Software Security - Proteção de dados sensíveis...
 
TDC2021 Innovation - Proteção de dados sensíveis com a computação confidencia...
TDC2021 Innovation - Proteção de dados sensíveis com a computação confidencia...TDC2021 Innovation - Proteção de dados sensíveis com a computação confidencia...
TDC2021 Innovation - Proteção de dados sensíveis com a computação confidencia...
 
Certificados SSL e Let's Encrypt
Certificados SSL e Let's EncryptCertificados SSL e Let's Encrypt
Certificados SSL e Let's Encrypt
 
Octoblu - IOT
Octoblu - IOTOctoblu - IOT
Octoblu - IOT
 
Politicas de segurança
Politicas de segurançaPoliticas de segurança
Politicas de segurança
 
Glossario
Glossario Glossario
Glossario
 
Palestra Joomla Day Brasil 2014 - Extensão de Webservice para Joomla 3
Palestra Joomla Day Brasil 2014 - Extensão de Webservice para Joomla 3Palestra Joomla Day Brasil 2014 - Extensão de Webservice para Joomla 3
Palestra Joomla Day Brasil 2014 - Extensão de Webservice para Joomla 3
 
A tecnologia “blockchain” aplicada ao Registro Imobiliário
A tecnologia “blockchain” aplicada ao Registro ImobiliárioA tecnologia “blockchain” aplicada ao Registro Imobiliário
A tecnologia “blockchain” aplicada ao Registro Imobiliário
 
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
 
Governança de Ambientes Heterogêneos - Single Sign-On para Servidores
Governança de Ambientes Heterogêneos - Single Sign-On para ServidoresGovernança de Ambientes Heterogêneos - Single Sign-On para Servidores
Governança de Ambientes Heterogêneos - Single Sign-On para Servidores
 
Integrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumIntegrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da Ethereum
 
Integrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumIntegrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da Ethereum
 

Mais de tdc-globalcode

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadetdc-globalcode
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...tdc-globalcode
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucessotdc-globalcode
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPAtdc-globalcode
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinotdc-globalcode
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...tdc-globalcode
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicestdc-globalcode
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publicatdc-globalcode
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#tdc-globalcode
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocustdc-globalcode
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?tdc-globalcode
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golangtdc-globalcode
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QAtdc-globalcode
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciatdc-globalcode
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Servicetdc-globalcode
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETtdc-globalcode
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8tdc-globalcode
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...tdc-globalcode
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#tdc-globalcode
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Coretdc-globalcode
 

Mais de tdc-globalcode (20)

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
 

Último

Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdflucassilva721057
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...Rosalina Simão Nunes
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptMaiteFerreira4
 
A poesia - Definições e Característicass
A poesia - Definições e CaracterísticassA poesia - Definições e Característicass
A poesia - Definições e CaracterísticassAugusto Costa
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...licinioBorges
 
Rotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaRotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaronaldojacademico
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxLuizHenriquedeAlmeid6
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.silves15
 
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxAULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxLaurindo6
 
Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA  - Autora Djamila RibeiroLivro O QUE É LUGAR DE FALA  - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA - Autora Djamila RibeiroMarcele Ravasio
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfMarianaMoraesMathias
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADOcarolinacespedes23
 
RedacoesComentadasModeloAnalisarFazer.pdf
RedacoesComentadasModeloAnalisarFazer.pdfRedacoesComentadasModeloAnalisarFazer.pdf
RedacoesComentadasModeloAnalisarFazer.pdfAlissonMiranda22
 

Último (20)

Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.ppt
 
A poesia - Definições e Característicass
A poesia - Definições e CaracterísticassA poesia - Definições e Característicass
A poesia - Definições e Característicass
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
 
Rotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaRotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riqueza
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.
 
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxAULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
 
Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA  - Autora Djamila RibeiroLivro O QUE É LUGAR DE FALA  - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
 
RedacoesComentadasModeloAnalisarFazer.pdf
RedacoesComentadasModeloAnalisarFazer.pdfRedacoesComentadasModeloAnalisarFazer.pdf
RedacoesComentadasModeloAnalisarFazer.pdf
 

TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we had a SRE team at - Authentication and Autorization with OAuth2, Spring Security, OpenID, Keycloak and JWT token

Notas do Editor

  1. 2
  2. 3
  3. 4
  4. 5
  5. 6
  6. 7
  7. 8
  8. 9
  9. 10
  10. 11
  11. 12
  12. 13
  13. 14
  14. 15
  15. 16
  16. 17
  17. 18
  18. 19
  19. 20
  20. 21
  21. 22
  22. 23
  23. 24
  24. 25
  25. 26
  26. 27
  27. 28
  28. 29