1个稳定版本

1.0.0 2024年2月20日

#293 in 身份验证

AGPL-3.0-or-later

43KB
1K SLoC

factoriauth - 一个非官方的 Factorio 身份验证服务器

假设你和你的朋友

  • 在一个石油钻井平台上,
  • 在太空中,或者
  • 在遥远的未来,

并且你想托管一个Factorio服务器。因为你没有互联网连接(或者官方身份验证服务器已经不存在了),你唯一的选择是在服务器配置中禁用 require_user_verification - 但这允许任何人都以任何用户身份连接,这在PvP场景中是非常糟糕的!难道你不希望能够设置自己的身份验证服务器吗?

factoriauth正是这样。它允许客户端使用一个或多个身份验证后端(例如LDAP或passwd风格的文件)提供的自定义用户登录,并允许服务器验证这些自定义用户是否已经正确认证。

路线图

完成

  • 服务器锁生成(《POST /generate-server-padlock-2》)
  • 生成 user_server_key(《POST /generate-user-server-key-2》)
  • 用户令牌生成和存储(《POST /api-login》)
  • LDAP身份验证后端
  • 服务器锁代理(允许例如factorio.com用户使用自定义身份验证服务器加入服务器)

计划

  • 更多身份验证后端:用户文件,PAM(?)

未计划

设置

配置factoriauth

config.toml.example 复制到 config.toml 并根据需要调整。

锁源

服务器锁有两个可能的来源:要么由factoriauth独立生成,用于完全自包含的设置,要么通过锁代理。

对于独立部署,padlock.secret需要是一个至少32字节的十六进制编码的二进制字符串——要么自己生成,要么尝试启动一次factoriauth,然后从错误信息中复制新生成的密钥。

要使用padlock代理,需要将padlock.proxy设置为另一个factorio认证服务器的基本URL,例如https://auth.factorio.com。服务器padlock将从该认证服务器获取,允许来自factoriauth和上游认证服务器的用户加入游戏服务器。

LDAP认证后端注意事项

Factoriauth首先以匿名方式绑定到指定的LDAP服务器,以便在search-base下查找登录用户的DN,从而允许例如通过电子邮件登录。LDAP服务器必须配置为允许这样做,才能使Factoriauth正确工作。

配置客户端/服务器

要使用认证服务器,需要在客户端和服务器上的config.ini中添加以下片段,并适当地替换服务器的URL

[servers]
auth-server=https://my-auth-server.example/

注意:如果客户端不是完全离线,还需要将更新服务器重写为无效/不可达的地址,否则客户端启动时将使用无效令牌联系它,并提示重新登录

[servers]
updater-server=http://invalid.example

运行factoriauth

可以使用以下命令和指示进行安装:cargo install --path .,然后根据指示更新$PATH,然后运行factoriauth run,或者直接从存储库运行程序:cargo run -- run

依赖关系

~73MB
~1.5M SLoC