AuthPI是一款参照了Authing API设计的开源的用户管理系统。如用户池、应用、联邦认证、ZTA的相关概念与Authing十分相似。
关于这些概念,请参见什么是用户池 | Authing 文档。
Note
您不能使用Authing SDK来调用AuthPI,它们是完全不同的产品。
Important
本项目名称的正确书写方法是AuthPI而不是AuthPi,读作/ɔθ paɪ/。AuthPI的正确简写是$A\pi$,纯ASCII的写法为AuthTT(简写为ATT)。
- 使用FastAPI自动生成API文档而不是手动定义OpenAPI规范,保证一致性。
- 使用Mongodb而不是其他SQL数据库,使得本软件在将来可扩展性和可维护性更高。
- 参照已成熟的类似闭源产品Authing的设计来开发,使得架构更加稳定清晰。
- AuthPI原生支持部署到Vercel(WIP),降低个人开发者和小型企业的开发成本。
- AuthPI是开源软件。
Warning
AuthPI还在开发,在0.0.1-alpha.1版本发布前,由于API的变更非常激进,因此不提供完整的文档。
AuthPI使用的FastAPI框架会自动生成符合OpenAPI规范的相关文档,您可以在/docs
和/redoc
下分别通过Swagger UI和Redocly查看API文档。并且,在AuthPI (apifox.com)上也托管了当前的最新API文档。
用户池(UserPool)是你用户系统的隔离的最小单位,不同场景的用户可以划分在不同的用户池。每个用户池下拥有自己的用户和应用程序,不同用户池之间的权限、应用、组织是完全隔离的。
应用程序(Application)是用户池的一部分。每个应用程序都有两个属性app_id
和app_secret
。你可以通过这两个属性来获取access_token
。access_token
的有效期为24小时,过期后将无法使用。
Note
app_id
不是_id/id
。
使用本项目前,请确保您有一定的的英语词汇量,并善用翻译软件。
- AuthPI使用
poetry
作为包管理器,如果没有,请通过pip install poetry
安装。 - 确保 Python 版本 >= 3.10 且 <3.13
使用poetry install
来安装依赖。安装成功后,您应该可以使用uvicorn
命令。
Note
如果提示uvicorn
不存在等错误,请尝试使用poetry run uvicorn <参数>
命令。
使用如下命令启动服务器:
uvicorn main:app
使用如下命令启动开发服务器(注:开发服务器下将会在代码修改时自动重载应用,并启用部分Debug功能,请勿将其用于生产环境)
uvicorn main:app --reload
如果需要指定端口或主机,则可以使用:
uvicorn main:app --host <主机> --port <端口>
AuthPI SDK正在开发中。
Note
默认情况下,uvicorn
将启动一个进程来运行AuthPI,如果您有更高的流量需求,请使用--workers <进程数量>
参数来调整,或者使用Kubernetes等服务进行分布式部署。
查看 open issues 了解我们的开发计划 (and known issues)。
在这里获取我们的支持:
- GitHub Discussions
- 通过 Github 上联系 XYCode
- 通过 Email 联系 [email protected]
如果您想表达感谢或/和支持 AuthPI 的积极开发:
- 为项目添加 GitHub Star。
- 在 Twitter 上宣传 AuthPI。
- 在 Dev.to、Medium 或您的个人博客上撰写有关该项目的有趣文章。
我们可以一起让 AuthPI 变得好!
首先,感谢您抽出时间为我们做出贡献!有了您的贡献,开源社区才能成为学习、启发和创造的好地方。您的任何贡献都将惠及其他人,我们将感激不尽。
请阅读我们的贡献指南,感谢您的参与!
本资源库的原始设置由 XYCode Kerman。
所有作者和贡献者的完整名单,请参阅贡献者页面。
AuthPI 遵循良好的安全规范,但无法保证 100% 的安全性。AuthPI 按**"现状 "提供,不提供任何保证**。使用风险自负。
如需了解更多信息和报告安全问题,请参阅我们的安全文档。
AuthPI的测试覆盖率始终保持在$\ge 99%$。而且,AuthPI会在每一个次版本和补丁发布时审计它的代码,确保没有安全问题。
Caution
您应当始终使用最新版本的AuthPI,并始终关注其的安全警报。
This project is licensed under the MIT license.
See LICENSE for more information.
WIP