Já perdi a conta de quantas vezes fiz isso:
- iniciar um projeto
- construir uma tela de login
- construir o procedimento de login
- pensei por alguns minutos / horas / dias sobre o armazenamento de senha
- depurou a tela de login
- depurou o procedimento de login
- construir um recurso “qual é minha senha”
- construir um recurso “gerenciar minha conta”
- integrado com logins sociais
- depurei os logins sociais
- iniciou o projeto real
E no final, nunca temos certeza se perdemos algo, especialmente relacionado à segurança . Lembrete: autenticação interrompida e gerenciamento de sessão está na posição 2 do OWASP’s Top 10.
Se isso soa como algo que você também fez, eu recomendo dar uma olhada no Keycloak do projeto . É um software de código aberto para gerenciar os usuários de seu aplicativo, com muitos recursos que você esperaria de uma ferramenta como esta.
Concedido, as ferramentas ainda estão em alfa, mas já estou usando para alguns projetos pessoais, com grande sucesso. Digno de menção especial é a capacidade de detectar facilmente seu front-end para seu back-end, com o uso de JSON Web Tokens: com ele, você não precisa manter um estado no lado do servidor, geralmente um problema com APIs cujo principal consumidor é um aplicativo front-end.
E se seu aplicativo estiver hospedado em um Wildfly / JBoss AS, você pode usar o subsistema Keycloak e fazer com que seu aplicativo seja independente dos procedimentos de autenticação / autorização. É JAAS ser legal de novo 🙂