开源身份认证提供商
为您的应用添加安全的登录和会话管理。支持多种SDK,适用于流行的编程语言和前端框架,如Node.js、Go、Python、React.js、React Native、原生JavaScript等。
SuperTokens的架构经过优化,可以为用户添加安全的身份认证,同时不影响用户和开发者体验。
SuperTokens架构的三个基本组成部分
- 前端SDK:管理会话令牌并渲染登录UI组件
- 后端SDK:提供注册、登录、登出、会话刷新等API。前端将与这些API通信
- SuperTokens核心:处理核心认证逻辑和数据库操作的HTTP服务。后端SDK使用此服务
功能
- 无密码登录
- 社交登录
- 邮箱密码登录
- 手机密码登录
- 会话管理
- 多因素认证
- 多租户/组织支持(企业SSO)
- 用户角色
- 微服务认证
了解更多
如果您喜欢我们的项目,请为这个仓库点 :star2:!如需反馈,欢迎加入我们的Discord,或在此仓库创建issue
🚀 什么是SuperTokens?
SuperTokens是Auth0或AWS Cognito等专有登录提供商的开源替代方案。我们的不同之处在于:
- 开源:SuperTokens可以永久免费使用,没有用户数量限制。
- 本地部署,让您完全控制用户数据,使用自己的数据库。
- 提供端到端解决方案,包括登录、注册、用户和会话管理,无需处理OAuth协议的复杂性。
- 易于实施且安全性更高。
- 可扩展性:任何人都可以贡献并改进SuperTokens!
理念
身份认证直接影响任何应用的用户体验、开发体验和安全性。我们认为, 当前的解决方案无法同时优化这三个"支柱",导致许多 应用不得不自行构建身份认证。这不仅会导致安全问题,还会 耗费大量时间。
我们希望改变这种状况 - 我们相信唯一的方法是提供一个具有适当抽象级别的解决方案, 给予您最大的控制权,既安全又易用 - 就像您自己从头开始构建一样 (减去学习、构建和维护的时间)。
我们还相信最少厂商锁定原则。您对用户数据的完全控制意味着您 可以在不强制现有用户登出、重置密码或最坏情况下重新注册的情况下切换离开SuperTokens。
点击这里查看演示应用。
- 请访问我们的网站查看功能列表。
- 我们希望功能尽可能解耦。这意味着您可以仅使用SuperTokens进行登录,或仅进行会话管理,或两者兼用。事实上,我们还提供与其他登录提供商(如Auth0)的会话管理集成。
文档
文档可在我们的网站上查看。
关于SuperTokens的更多信息可以在 GitHub wiki部分找到。
🏗️ 架构
请查看这里的架构图
欲了解更多信息,请访问 我们的GitHub wiki部分。
☕ 为什么选择Java?
- ✅ 虽然运行Java看似困难,但我们在分发二进制文件/Docker镜像时提供了JDK。这使得运行SuperTokens就像运行任何其他HTTP微服务一样简单。
- ✅ Java拥有非常成熟的生态系统。这意味着第三方库经过了实战检验。
- ✅ Java的强类型系统确保更少的错误和更容易的维护性。当许多人预期在同一个项目上工作时,这一点尤为重要。
- ✅ 我们的团队最熟悉Java,而且招聘优秀的Java开发人员相对容易。
- ✅ Java最大的批评之一是内存使用。我们有三个解决方案:
- 最频繁的身份认证相关操作是会话验证 - 这在后端SDK(node、python、Go)中进行,无需联系Java核心。因此,单个核心实例可以轻松处理数万用户。
- 我们谨慎选择了依赖项。例如:我们使用嵌入式tomcat服务器而不是更高级别的Web框架。
- 我们还计划在未来使用GraalVM,这可以减少95%的内存使用!
- ✅ 如果您需要对身份认证API进行任何修改,这些修改需要在后端SDK级别(例如Node、Golang、Python..)进行。因此,您很少需要直接修改/处理此仓库中的Java代码。
⌨️ 用户管理仪表板
使用SuperTokens用户管理仪表板监督您的用户
列出用户
列出所有注册到您应用程序的用户。
管理用户
通过修改或删除用户的会话、元数据、角色和帐户信息来管理用户。
🔥 SuperTokens与其他产品对比
请在我们的网站上查看详细的对比表
🛠️ 从源代码构建
请查看我们的wiki获取说明。
👥 社区
如果您认为这是一个将来可能使用的项目,请为这个仓库点 :star2:!
贡献者(涵盖所有SuperTokens仓库)
Chotu Chaudhary
Tomáš Horáček
Sam Bauch
Alexey 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
Jacob Marshall
miketromba
Oleg Vdovenko
Siddharth
xuatz
Yoway Buorn
Ronit Panda
Anugrah Singhal
Jeremy Eastham
Assaf Yacobi
Sattvik Chakravarthy
Olivier Pichon
Siddhant Varma
仁义久
以赛亚·托马森
乌特萨夫·巴恩瓦尔
索拉布·加特内卡尔
阿利舍尔·艾图阿罗夫
西蒙·基尔伯格·沃尔斯特罗姆
阿里布·汗
尼古拉斯·达德菲尔德
Qdea
卢卡斯·克努特
梅尔文·希尔斯
马特·默里
克莱奥·勒伯特
丹尼尔·博罗沃伊
克日什托夫·维特科夫斯基
莱霍茨基·佐尔坦
维拉吉·坎瓦德
阿努拉格·斯里瓦斯塔瓦 ## 👩💻 贡献
请参阅 CONTRIBUTING.md 文件获取说明。
📝 许可证
© 2020-2023 SuperTokens Inc 及其贡献者。保留所有权利。
本软件的部分内容按以下方式授权:
- 本仓库中 "ee/" 目录下的所有内容(如果该目录存在)均按照 "ee/LICENSE.md" 中定义的许可证授权。
- 所有集成到 SuperTokens 软件中的第三方组件均按照相应组件所有者提供的原始许可证授权。
- 除上述目录或限制外的内容均按照顶层 "LICENSE.md" 文件中定义的 "Apache 2.0" 许可证提供。