Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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
Computi...
Quem somos?
Vinicius Soares
• Arquiteto de Software
• Especialista Java
• Pai da Nega Mary
• Problemas com segurança em microserviços;
• Autenticação e Autorização em contâiners web;
• Entendendo OAuth2;
• Entende...
• Como identificar, criar e separar as permissões de acesso ?
• Como identificar os perfis e fluxos de sistema para difere...
Autenticação Autorização
• Processo de identificação de uma identidade
alegada;
• Validação de credenciais;
• Processos distintos de acesso:
oUsuár...
• Validar privilégios de um usuário previamente
autenticado;
• Tem a função de definir o que um usuário pode fazer no
sist...
• O OAuth2 é o protocolo de autorização mais utilizado em
aplicações web no mundo;
• Utiliza tokens para acessar seus dado...
OAuth2 – Quem usa?
OAuth2 Flow
• OpenID é um padrão aberto e um protocolo de autenticação
descentralizado;
• Possibilidade de compartilhamento de informa...
OpenID
Spring Security e OAuth2
• Segurança através de papéis;
• Controle facilitado via Annotations;
• Trabalho simplificado par...
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...
• Single-Sign On - Uma vez conectado ao Keycloak, os usuários não
precisam se conectar novamente para acessar uma aplicaçã...
• Social Login - Keycloak também pode autenticar usuários com os provedores
de identidade OpenID Connect ou SAML 2.0 exist...
• JSON Web Token (JWT) é um padrão aberto (RFC 7519) que define uma
maneira compacta e autônoma para transmitir de forma s...
JWT Token
JWT Token
{"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIyTWhzS0xHS2ZRbHJxNlkyc3pFcHVtVm1rR2Y4MmZXTVN6NlJLcnhac...
Bearer Token JWT
• Possui 34 cooperativas;
• 230 unidades de negócios;
• Presente em 10 estados brasileiros;
• 04 unidades centrais;
• 180 ...
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
viniciuss@dbserver.com.br
https...
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we had a SRE team at - Authentication and Autoriz...
Upcoming SlideShare
Loading in …5
×

TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we had a SRE team at - Authentication and Autorization with OAuth2, Spring Security, OpenID, Keycloak and JWT token.

377 views

Published on

Trilha Microservices How we figured out we had a SRE team at -Authentication and Autorization with OAuth2, Spring Security, OpenID, Keycloak and JWT token.

Published in: Education
  • Be the first to comment

TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we had a SRE team at - Authentication and Autorization with OAuth2, Spring Security, OpenID, Keycloak and JWT token.

  1. 1. Segurança em Microsserviços Autenticação e Autorização com OAuth2, Spring Security, OpenID, Keycloak e JWT token.
  2. 2. Quem sou? Cléber da Silveira • Arquiteto de software na DBServer. • Especialista Java. • Entusiasta DevOps e Cloud Computing. • Surfista?
  3. 3. Quem somos? Vinicius Soares • Arquiteto de Software • Especialista Java • Pai da Nega Mary
  4. 4. • 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
  5. 5. • 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 compartilhadas 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
  6. 6. Autenticação Autorização
  7. 7. • 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
  8. 8. • 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
  9. 9. • 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
  10. 10. OAuth2 – Quem usa?
  11. 11. OAuth2 Flow
  12. 12. • 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
  13. 13. OpenID
  14. 14. 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.
  15. 15. Spring Security e OAuth2
  16. 16. Spring Security e OAuth2
  17. 17. • 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
  18. 18. • 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
  19. 19. • 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 relacional. KeyCloak
  20. 20. • 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
  21. 21. JWT Token
  22. 22. JWT Token
  23. 23. {"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
  24. 24. Bearer Token JWT
  25. 25. • Possui 34 cooperativas; • 230 unidades de negócios; • Presente em 10 estados brasileiros; • 04 unidades centrais; • 180 mil cooperados; • 01 confederação nacional. Case
  26. 26. https://github.com/csilveir/
  27. 27. Dúvidas ?
  28. 28. www.keycloak.org www.jwt.io http://spring.io http://openid.net http://oauth.net/2 Referências
  29. 29. clebers@dbserver.com.br https://www.linkedin.com/in/cleber-da-silveira-b24b0920 @clsilveir viniciuss@dbserver.com.br https://www.linkedin.com/in/viniciusdurantisoares/ @vicolino_ Obrigado!

×