1个稳定版本
1.0.0 | 2024年2月20日 |
---|
#293 in 身份验证
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