Provedor de autenticação de código aberto
Adicione login seguro e gerenciamento de sessão aos seus aplicativos. SDKs disponíveis para linguagens populares e estruturas de front-end, por exemplo, Node.js, Go, Python, React.js, React Native, Vanilla JS, etc.
A arquitetura Supertokens é otimizada para adicionar autenticação segura para seus usuários sem comprometer a experiência do usuário e do desenvolvedor
Três blocos de construção da arquitetura SuperTokens
- SDK de front-end: gerencia tokens de sessão e renderiza widgets de UI de login
- SDK de back-end: fornece APIs para inscrição, login, logout, atualização de sessão, etc. Seu front-end se comunicará com essas APIs
- SuperTokens Core: O serviço HTTP para a lógica de autenticação principal e operações de banco de dados. Este serviço é usado pelo Backend SDK
Características
- Login sem senha
- Login social
- Login com senha de e-mail
- Login com senha do telefone
- Gerenciamento de sessão
- Autenticação multifator
- Multilocação/suporte organizacional (SSO empresarial)
- Funções de usuário
- Autenticação de microsserviço
Saber mais
- O que são SuperTokens?
- Filosofia
- Recursos + aplicativo de demonstração
- Documentação
- Arquitetura
- ☕ Por que Java?
- ⌨️ Painel de gerenciamento de usuários
- SuperTokens vs Outros
- Construindo a partir da fonte
- Comunidade
- ? Contribuindo
- Licença
Se você gosta do nosso projeto, por favor? este repositório! Para feedback, sinta-se à vontade para entrar em nosso Discord ou criar um problema neste repositório
O que são SuperTokens?
SuperTokens é uma alternativa de núcleo aberto para provedores de login proprietários como Auth0 ou AWS Cognito. Somos diferentes porque oferecemos:
- Código aberto: SuperTokens podem ser usados gratuitamente, para sempre, sem limite de número de usuários.
- Uma implantação local para que você controle 100% dos dados do usuário, usando seu próprio banco de dados.
- Uma solução ponta a ponta com login, inscrições, gerenciamento de usuários e sessões, sem todas as complexidades dos protocolos OAuth.
- Facilidade de implementação e maior segurança.
- Extensibilidade: Qualquer pessoa pode contribuir e tornar os SuperTokens melhores!
Filosofia
A autenticação afeta diretamente a experiência do usuário, a experiência de desenvolvimento e a segurança de qualquer aplicativo. Acreditamos que as soluções atuais não podem otimizar todos os três “pilares”, fazendo com que muitos aplicativos executem manualmente sua própria autenticação. Isso não só leva a problemas de segurança, mas também consome muito tempo.
Queremos mudar isso - acreditamos que a única maneira é fornecer uma solução que tenha o nível certo de abstração, ofereça o máximo controle, seja segura e simples de usar - como se você mesmo construísse, do zero (sem o tempo para aprender, construir e manter).
Também acreditamos no princípio do menor aprisionamento do fornecedor. Ter controle total dos dados do seu usuário significa que você pode sair do SuperTokens sem forçar os usuários existentes a sair, redefinir suas senhas ou, na pior das hipóteses, se inscrever novamente.
Clique aqui para ver o aplicativo de demonstração.
- Por favor, visite nosso site para ver a lista de recursos.
- Queremos tornar os recursos o mais desacoplados possível. Isso significa que você pode usar SuperTokens apenas para login, apenas para gerenciamento de sessão, ou ambos. Na verdade, também oferecemos integrações de gerenciamento de sessão com outros provedores de login como o Auth0.
Documentação
Os documentos podem ser vistos em nosso site.
Há mais informações sobre SuperTokens na seção wiki do GitHub.
Arquitetura
Encontre um diagrama de arquitetura aqui
Para obter mais informações, visite nossa seção wiki do GitHub.
☕ Por que Java?
- ✅ Embora executar Java possa parecer difícil, fornecemos o JDK junto com a imagem binária/docker ao distribuí-lo. Isso torna a execução de SuperTokens igual à execução de qualquer outro microsserviço HTTP.
- ✅ Java possui um ecossistema muito maduro. Isso implica que bibliotecas de terceiros foram testadas em batalha.
- ✅ O sistema de tipo forte do Java garante menos bugs e facilidade de manutenção. Isto é especialmente importante quando se espera que muitas pessoas trabalhem no mesmo projeto.
- ✅ Nossa equipe se sente mais confortável com Java e contratar ótimos desenvolvedores Java também é relativamente fácil.
- ✅ Uma das maiores críticas ao Java é o uso de memória. Temos três soluções para isso:
- A operação relacionada à autenticação mais frequente é a verificação de sessão - isso acontece dentro do SDK de back-end (node, python, Go) sem entrar em contato com o núcleo Java. Portanto, uma única instância do núcleo pode lidar com várias dezenas de milhares de usuários com bastante facilidade.
- Escolhemos cuidadosamente nossas dependências. Por exemplo: usamos um servidor Tomcat incorporado em vez de uma estrutura web de nível superior.
- Também planejamos usar o GraalVM no futuro e isso pode reduzir o uso de memória em 95%!
- ✅ Se você precisar de alguma modificação nas APIs de autenticação, elas precisarão ser feitas no nível do SDK de back-end (por exemplo, Node, Golang, Python...). Portanto, você raramente precisará modificar/trabalhar diretamente com o código Java neste repositório.
⌨️ Painel de gerenciamento de usuários
Supervisione seus usuários com o painel de gerenciamento de usuários SuperTokens
Listar usuários
Liste todos os usuários que se inscreveram em seu aplicativo.
Gerenciar usuários
Gerencie usuários modificando ou excluindo sessões, metadados, funções e informações de conta.
SuperTokens versus outros
Por favor, encontre um gráfico de comparação detalhado em nosso site
Construindo a partir da fonte
Por favor, consulte nosso wiki para obter instruções.
Comunidade
Se você acha que este é um projeto que você poderia usar no futuro, por favor? este repositório!
Colaboradores (em todos os repositórios SuperTokens)
Rishabh Poddar | Advait Ruia | Bhumil Sarvaiya | Joel Coutinho |
Rakesh UP | Mufassir Kazi | Nemi Xá | Rohit Bhatia |
Madhu Mahadevan | Aidar Nugmanoff | Arnav Dewan | NkxxkN |
Senhor Chadiwala | Luis Soares | Sudipto Ghosh | Fabrício20 |
macaco metálico | Vidhyanshu Jain | Domenico Luciani | Enzo Batrov |
Eloïse Isautier | Ákos Resch | Chotu Chaudhary | Tomáš Horáček |
Sam Bauch | Alexei Tylindus | Gus Fune | chenkaiC4 |
Marek Dulowski | Piyushh Bhutoria | Eric Dobbertin | Kyle Dodson |
Ralph Lawrence | Christopher Kapic | Hanzyusuf | Mihály Lengyel |
Cerino O. Ligutom III | nadilas | Vasile Catana | Jay Mistry |
Jacó Marshall | miketromba | Oleg Vdovenko | Siddharth |
xuatz | Yoway Buorn | Rony Panda | Anugrah Singhal |
Jeremy Eastham | Assaf Yacobi | Chakravarthy Sattvik | Olivier Pichon |
Siddhant Varma | renyijiu | Isaías Thomason | Utsav Barnwal |
Saurabh Ghatnekar | Alisher Aituarov | Simon Kihlberg Wallström | Areeb Khan |
Nicholas Dudfield | Qdea | Lucas Knuth | Colinas Melvyn |
Matt Murray | Cléo Rebert | Daniel Borovoy | Krzysztof Witkowski |
Lehoczky Zoltán | Viraj Kanwade | Anurag Srivastava |
? Contribuindo
Consulte o arquivo CONTRIBUTING.md para obter instruções.
Licença
© 2020-2023 SuperTokens Inc e seus colaboradores. Todos os direitos reservados.
Partes deste software são licenciadas da seguinte forma:
- Todo o conteúdo que reside no diretório "ee/" deste repositório, se esse diretório existir, é licenciado sob a licença definida em "ee/LICENSE.md".
- Todos os componentes de terceiros incorporados ao Software SuperTokens são licenciados sob a licença original fornecida pelo proprietário do componente aplicável.
- O conteúdo fora dos diretórios mencionados acima ou das restrições acima está disponível sob a licença "Apache 2.0", conforme definido no arquivo de nível "LICENSE.md"