#user-login #oauth #open-id #connect #own #password #identity

bin+lib idcoop

简单的身份服务器(用户登录管理器),支持 OpenID Connect(OAuth 2.0)。可用于您自己的简单单点登录系统,或者您不需要为您的软件编写登录系统。[应用程序包,不是库]

1 个不稳定版本

0.0.1 2024 年 7 月 7 日

#12 in #user-login

AGPL-3.0-or-later

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