66 lines
2.1 KiB
Markdown
66 lines
2.1 KiB
Markdown
# factoriauth - an unofficial [Factorio](https://factorio.com) authentication server
|
|
|
|
Let's say you and your friends are
|
|
- on an oil rig,
|
|
- in space, or
|
|
- in the far future,
|
|
|
|
and you want to host a Factorio server. Because you don't have an internet connection (or the
|
|
official authentication servers don't exist anymore), your only option is to disable
|
|
`require_user_verification` in the server config - but this allows anyone to connect as any user,
|
|
which is no good, especially for PvP scenarios! Wouldn't it be great if you could set up your own
|
|
authentication server?
|
|
|
|
factoriauth is exactly that. It allows clients to log in as custom users provided by one of several
|
|
authentication backends (e.g. LDAP or a passwd-style file), and allows servers to validate that
|
|
these custom users are properly authenticated.
|
|
|
|
## Roadmap
|
|
|
|
### Complete
|
|
|
|
Nothing yet!
|
|
|
|
### Planned
|
|
|
|
- [user token generation](https://wiki.factorio.com/Web_authentication_API) (`POST /api-login`)
|
|
- auth backends: LDAP, user file, PAM(?)
|
|
- server padlock generation (`POST /generate-server-padlock-2`)
|
|
- `user_server_key` generation (`POST /generate-user-server-key-2`)
|
|
- server padlock proxying (to allow e.g. factorio.com users to join servers using a custom auth
|
|
server)
|
|
|
|
### Unplanned
|
|
|
|
- [updater server functionality](https://wiki.factorio.com/Download_API)
|
|
- [mods server functionality](https://wiki.factorio.com/Mod_portal_API)
|
|
- [multiplayer lobby server functionality](https://wiki.factorio.com/Matchmaking_API)
|
|
|
|
## Setup
|
|
|
|
### Configuring factoriauth
|
|
|
|
TBD
|
|
|
|
### Configuring clients/servers
|
|
|
|
To use the auth server, the following snippet needs to be added to the clients' and servers'
|
|
`config.ini`, replacing the URL of the server as appropriate:
|
|
|
|
```ini
|
|
[servers]
|
|
auth-server=https://my-auth-server.example/
|
|
```
|
|
|
|
Unless your clients are really offline, you also need to override the updater server to an
|
|
invalid/unreachable address, otherwise the client will contact it with an invalid token on startup
|
|
and prompt for a re-login:
|
|
|
|
```ini
|
|
[servers]
|
|
updater-server=http://invalid.example
|
|
```
|
|
|
|
### Running factoriauth
|
|
|
|
TBD
|