1 个不稳定版本
0.0.1 | 2024 年 7 月 7 日 |
---|
#12 in #user-login
175KB
3.5K SLoC
idCoop
idCoop 是一个小巧轻量级的身份提供者/用户登录系统。idCoop 作为 OpenID Connect(OAuth 2.0/2.1)提供者。您可以用它作为您家庭服务器的单点登录(SSO)解决方案,或者避免为您自己的服务手动编写登录系统。
idCoop 仍然处于实验阶段且未充分开发。如果您使用它,则风险自担 :-)。
功能
- 支持 OAuth 2.1 草案 9(OAuth 2.1 实质上是 OAuth 2.0 最佳实践的重新表述)
- OpenID Connect
- 用户名和密码登录(密码使用 Argon2 哈希)
- 轻量级要求:少于 32 MB RAM 使用量
未来功能
- 电子邮件注册
- 电子邮件密码重置
- 双因素认证
- 邀请制服务的注册令牌/链接系统
- 管理界面
文档
文档位于 docs
目录中,(待办)将在网络上提供查看。
请参阅文档以获取安装说明。
许可和贡献
版权 © Olivier 'reivilibre' 2024
idCoop 目前根据 AGPL v3 许可。请参阅许可文件。除非另有说明,本源代码库中的所有文件均受此许可协议约束。
idCoop 目前处于早期阶段,对于贡献,我仍不确定最终许可。但是,如果您希望,请通过 git 提交元数据中找到的电子邮件地址联系我。谢谢。
使用 Nix flake 获取开发工具
我们有一个包含所有必需工具的 Nix flake;您可以使用 direnv 和 direnv allow
此存储库,或者根据需要使用 nix develop --impure ./flake-devenv
。
数据库
您需要使用 Postgres 数据库来运行 idCoop,以及在代码中更改 SQL 查询时也是如此。
如果使用Nix flake,可以使用devenv up
来启动Postgres数据库(然后您可以使用psql
命令行和看起来空白的postgres:
URI连接到SQLx)。
我们使用SQLx作为数据库驱动程序,并使用其编译时查询检查,但请注意我们支持SQLx的'离线模式'。(我们希望CI和其他人能够在无需数据库进行查询分析的情况下编译项目。)这意味着,如果添加或更改SQL查询,您需要运行cargo sqlx prepare --database-url postgres:
然后您需要将更改包含在.sqlx/
目录中的提交中。
生成RSA密钥
# Generate keypair part
openssl genrsa -out keypair.pem 2048
# Extract public part
openssl rsa -in keypair.pem -pubout -out publickey.crt
依赖项
~58–96MB
~1.5M SLoC