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

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

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