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

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

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

Matheus

October 01, 2022
Tweet

More Decks by Matheus

Other Decks in Programming

Transcript

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

    View full-size slide

  2. • Mineiro

    • Engenheiro de Software @ Trybe

    • 10+ anos xp

    • Tentando ser
    fi
    tness

    • @mfbmina

    View full-size slide

  3. $ cat not_included.txt

    View full-size slide

  4. • Feature
    fl
    ags / feature switches / feature toggles

    • Autenticação & autorização entre serviços

    View full-size slide

  5. $ man authentication

    View full-size slide

  6. De
    fi
    ne como a pessoa entra em seu sistema
    Autenticação é validar a autenticidade de um usuário

    View full-size slide

  7. $ man authorization

    View full-size slide

  8. De
    fi
    ne os papéis e privilégios de determinada pessoa
    Autorização é permitir um usuário executar determinada ação

    View full-size slide

  9. • Administrador & Usuário

    • Professor & estudante

    • Usuários de leitura & usuário de escrita

    View full-size slide

  10. $ diff authentication authorization

    View full-size slide

  11. • Autenticação valida a identidade

    • Autorização valida os papéis de uma identidade

    View full-size slide

  12. • 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

    View full-size slide

  13. $ man componentes
    • Apigateway

    • Aplicação

    • Serviço de autorização

    • Serviço de autenticação

    View full-size slide

  14. $ 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)

    View full-size slide

  15. $ man app
    • React + JS / TS

    • Elixir + Phoenix

    • Postgres

    View full-size slide

  16. • Facilidade de uso

    • Documentação abrangente

    • Performance

    • Segurança

    • Builds

    View full-size slide

  17. $ go run authorization/main.go

    View full-size slide

  18. $ 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

    View full-size slide

  19. $ 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

    View full-size slide

  20. $ cat adoption.txt
    • Envolvemos as equipes no processo de construção

    • Processo simples e bem documentado

    • Ajuda e exemplos

    View full-size slide

  21. $ cat performance.txt
    • Concorrência

    • Benchmark de código

    • Benchmark da solução

    • Dashboards

    • Monitoramento

    View full-size slide

  22. $ man concurrency

    View full-size slide

  23. $ go test -bench=.

    View full-size slide

  24. $ ./app_benchmark

    View full-size slide

  25. • 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

    View full-size slide

  26. $ grep *.dashboard

    View full-size slide

  27. $ cat monitoring.txt

    View full-size slide

  28. • Sentry

    • Alertas con
    fi
    gurados pela infra

    • APMs

    View full-size slide

  29. $ cat problems.txt
    • Ponto único de falha

    • Tempo de resposta

    View full-size slide

  30. $ go run authentication/main.go

    View full-size slide

  31. $ 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)

    View full-size slide

  32. $ cat motivations.txt
    • Custo

    • Acabar com o vender lock-in

    • Centralizar interações com o provedor de identidade

    View full-size slide

  33. $ 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

    View full-size slide

  34. $ 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%

    View full-size slide

  35. $ 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

    • …

    View full-size slide

  36. Perguntas?
    Muito obrigado!

    View full-size slide