Executando verificação de segurança...
1

[Dúvida] Quais são as soluções mais utilizadas para lidar com login?

Bom dia a todos!

Estou estudando backend e estou em busca de desenvolver meu primeiro SaaS. Já desenvolvi pequenos projetos como o buscador de livros e a calculadora de juros de compra e tenho uma boa base de Python.

Pesquisei recentemente sobre conceitos como o JWT e implementei em playground. Gostaria de saber o que é usado atualmente na indústria e em SaaS por ai. Poderiam compartilhar o que usam(stack, 3rd party...) na sua empresa ou solução?

Carregando publicação patrocinada...
4

JWT Não foi feito pra login

JWT não pode ser alterado nem revogado depois de ser emitido. Ele foi criado com a intenção de "prova de vida", apenas comprovar que você é você. Onde ele brilha? em autenticação entre serviços.

Qual o ideal para autenticação?

Sempre uso nos meus projetos o conceito de cookie de sessão. A maioria dos frameworks já oferece isso por padrão. No laravel não precisa ser configurado nada, no .NET é possível pelo services.ConfigureApplicationCookie(options).

Pedindo para o GPT como implementar em python ele deu 2 alternativas: com flask usando flask-session e com o django que já suporta no framework base.

Quais as melhores práticas?

O cookie deve ter somente um identificador (não devemos confiar nos dados que o usuário pode modificar) e persistir os dados via servidor.
O cookie deve ser HttpOnly e Secure=true. Uma configuração ideal seria assim:

Set-Cookie: session_id=RANDOM_STRONG_SESSION_TOKEN;
Domain=projeto.com;
Path=/;
Max-Age=64800; ou Expires=(timestamp);
HttpOnly;
Secure;
SameSite=Lax;

Mantenha a expiração o mais curta possível a menos que o usuário utilize o remember-me, eu gosto de configurar para 16 horas sem remember-me e 30 dias com.

1
1

Para Python eu gosto muito de Flask e Django e empacotar tudo com Electron se for software, se for web já é nativo, muitas dessas funções comuns já estão prontas e testadas, acelera muito o desenvolvimento. Atenção a segurança se for software distribuível, precisa de encriptação, assinatura, certificado a parafernália toda e eu ainda faria uma boa obfuscação do código.