Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Autenticação & Autorização de pessoas usuárias ...

Avatar for Matheus Matheus
October 01, 2022

Autenticação & Autorização de pessoas usuárias @ Trybe

Essa palestra define os conceitos de autenticação e autorização e mostra como estamos resolvendo estes problemas na Trybe.

Palestra apresentada na GopherCon Brasil de 2022

Avatar for Matheus

Matheus

October 01, 2022
Tweet

More Decks by Matheus

Other Decks in Programming

Transcript

  1. • Mineiro • Engenheiro de Software @ Trybe • 10+

    anos xp • Tentando ser fi tness • @mfbmina
  2. • Feature fl ags / feature switches / feature toggles

    • Autenticação & autorização entre serviços
  3. De fi ne como a pessoa entra em seu sistema

    Autenticação é validar a autenticidade de um usuário
  4. De fi ne os papéis e privilégios de determinada pessoa

    Autorização é permitir um usuário executar determinada ação
  5. • Escola de tecnologia orientada para o desenvolvimento de uma

    carreira • >400k usuários • Lock-in vendor • Não existia de fi nir papeis claros entre os tipos de usuários • Controle de acesso distribuído entre apps
  6. $ man componentes • Apigateway • Aplicação • Serviço de

    autorização • Serviço de autenticação
  7. $ man apigateway • Trae fi k • Recebe toda

    requisição para dentro da infraestrutura • Responsável por decidir qual aplicação deve responder a requisição • Responsável por checagens intermediárias (ex: CORS)
  8. $ man app • React + JS / TS •

    Elixir + Phoenix • Postgres
  9. $ man authorization_service • App escrita em Go • Centralizar

    o controle de acesso • Veri fi ca a autenticidade da identidade da pessoa usuária • Veri fi ca se o usuário tem a permissão necessária para a rota desejada
  10. $ cat challenges.txt • Centralizar o controle de acesso •

    Adoção fácil entre as equipes • Não deve impactar a performance e a experiência do usuário
  11. $ cat adoption.txt • Envolvemos as equipes no processo de

    construção • Processo simples e bem documentado • Ajuda e exemplos
  12. $ cat performance.txt • Concorrência • Benchmark de código •

    Benchmark da solução • Dashboards • Monitoramento
  13. • Siege (https://github.com/JoeDog/siege) • Fornece arquivo de URLs a serem

    acessadas • Permite con fi gurar quantidade de conexões concorrentes • Testes feitos com 1x, 1,5x, 2x, 10x, 100x carga atual
  14. $ man authentication_service • App escrita em Go • Responsável

    por se comunicar com os provedores de identidade • Gera & valida token de usuário • Guarda as papéis (roles) existentes • Guarda as associações entre usuário e papéis (roles)
  15. $ cat motivations.txt • Custo • Acabar com o vender

    lock-in • Centralizar interações com o provedor de identidade
  16. $ cat challenges.txt • Chamadas espalhadas pelo monolito • Começando

    a se espalhar pelos microserviços • Códigos dentro do provedor de identidade • Emails e con fi gurações dentro do provedor de identidade • Con fi gurações diferentes entre ambientes • Alterar tudo sem afetar a experiência das pessoas usuárias
  17. $ cat plan.txt 1. Estudo sobre as opções de provedores

    de identidade 2. Levantamento sobre quais aplicações estão se comunicando com o provedor antigo e como estão se comunicando. 3. Criação do novo serviço 4. Centralização das chamadas no novo serviço 5. Duplicar todas as funcionalidades que utilizamos do provedor antigo para o novo 6. Migrar os usuários do antigo para o novo 7. Passar a utilizar utilizar o novo em 100%
  18. $ cat learnings.txt • Estudo e planejamento são essenciais •

    Não subestime a complexidade do desa fi o • Documentação sempre vai ser útil no futuro • Isolar e centralizar cedo evitou retrabalho • …