training-center / hades

Back-End da Plataforma do Mentoria
MIT License
29 stars 7 forks source link

Estratégia Login e Armazenamento #6

Open hdamaich opened 6 years ago

hdamaich commented 6 years ago

Na discussão da estrutura do banco de dados surgiu a duvida de como vamos armazenar os dados de login. Acho que esse discussão deve ser um pouco mais ampla, então acho bom centralizarmos nesse issue, depois adaptamos a estrutura do banco para o que definimos.

Algumas estratégias que foram levantadas pelo @angeliski

hdamaich commented 6 years ago

Acho que ambas estratégias são validas, estou com um pezinho em escolher o OAuth2, alguém enxerga algum problema que podemos ter?

angeliski commented 6 years ago

Tenho algumas considerações: Vantagem do JWT: Acredito que a maior é o controle total do token, isso permite customizações que podem facilitar a vida no desenvolvimento. Desvantagem do JWT: Acredito que é a necessidade de implementar uma camada de controle, validar se o token é válido, não expirou, é do usuário que está mandando e outras validações referentes a qualquer customização adicional. Vantagens do OAuth2: Além de ser um padrão amplamente implementado, permite que as complicações de segurança sejam delegadas a terceiros, permitindo o foco na aplicação e não em validar token. Desvantagem do OAuth2: Não sei se é um problema, mas acho que obrigar o usuário a ter um "social" para se logar é ruim. Eu mesmo não logo em lugar nenhum com redes se tiver opção de um cadastro simples. Além disso, agregar fontes diferentes de login gera um overhead caso qualquer uma delas altere algo que já implementamos (seja a maneira de fazer login, ou o nome que agora não volta mais da autenticação)

Claro que existem facilitadores para ambos os casos, mas eles tem seu overhead também

emanuelgsouza commented 6 years ago

Eu gosto muito do JWT, todavia, os pontos que o @angeliski colocou são muito pertinentes.

Com relação a login de redes sociais, eu penso que como estamos falando do TC, penso que podemos ter como login o próprio Github.

bernardodiasc commented 6 years ago

++++ Login do GitHub

hdamaich commented 6 years ago

Foi exatamente o que pensei, usar OAuth2 e caso a pessoa fique podemos sugestionar da pessoa usar o Github como login. Acho que essa discussão merece um aval superior @woliveiras, o que acha sobre esse assunto?

cristiano-pacheco commented 6 years ago

Muito boa essa discussão!

Eu acredito que também devemos criar uma autenticação simples, sem rede social, onde o usuário informa o usuário e senha.

da para usar JWT com OAuth2 e tals, mas o OAuth é mais custoso para implementar.

Eu acredito que neste momento, adotar uma autenticação simples com JWT seria melhor. E talvez em paralelo criar a autenticação via rede social.

Assim agente consegue começar a implementar os endpoints da api.

lflimeira commented 6 years ago

Eaee galera, então... Minha opinião quanto ao JWT e a camada de controle é que podemos usar framework para facilitar isso.

Eu nunca usei OAuth, mas confio na decisão de vcs.

Quanto ao login por rede social, eu acho importante ter, principalmente pelo GitHub, dessa forma mantemos a essência de como é feito hoje, o TC é um projeto que nasceu do GitHub, e todas as pessoas do projeto precisam estar vinculadas ao GitHub. (minha opinião)

Podemos seguir dessa forma?

lflimeira commented 6 years ago

Pessoal tendo em vista o que o @angeliski falou que é retornado pelo login social, n deveríamos alterar as tabelas para que ela receba os tokens?

tchaguitos commented 6 years ago

Cara, os pontos que o @angeliski levantou são extremamente pertinentes, todavia, não vejo a questão dos controllers como um impedimento, visto que é relativamente fácil de se implementar. Com relação aos logins sociais, acho que são válidos, mas devemos manter um login "tradicional", com login e senha.

@lflimeira, os tokens não precisam ser armazenados em banco não, mas se quisermos, o pessoal usa bastante o redis pra isso.