docs: add example config file and update README
This commit is contained in:
parent
eeb09321e2
commit
8c91edf137
2 changed files with 59 additions and 1 deletions
37
README.md
37
README.md
|
|
@ -82,7 +82,9 @@ uv run porchlight initial-admin admin --group admin --group superusers
|
||||||
|
|
||||||
### Configuration
|
### Configuration
|
||||||
|
|
||||||
All settings are read from environment variables with the `OIDC_OP_` prefix:
|
All settings are read from environment variables with the `OIDC_OP_` prefix.
|
||||||
|
Settings can also be provided via a TOML config file (see below). Environment
|
||||||
|
variables always take priority over file values.
|
||||||
|
|
||||||
| Variable | Default | Description |
|
| Variable | Default | Description |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
|
|
@ -93,9 +95,42 @@ All settings are read from environment variables with the `OIDC_OP_` prefix:
|
||||||
| `OIDC_OP_SIGNING_KEY_PATH` | `data/keys` | OIDC signing key storage |
|
| `OIDC_OP_SIGNING_KEY_PATH` | `data/keys` | OIDC signing key storage |
|
||||||
| `OIDC_OP_INVITE_TTL` | `86400` | Magic link expiry in seconds |
|
| `OIDC_OP_INVITE_TTL` | `86400` | Magic link expiry in seconds |
|
||||||
| `OIDC_OP_MANAGE_CLIENT_ID` | `manage-app` | Client ID for the management UI |
|
| `OIDC_OP_MANAGE_CLIENT_ID` | `manage-app` | Client ID for the management UI |
|
||||||
|
| `OIDC_OP_CONFIG_FILE` | `porchlight.toml` | Path to TOML config file |
|
||||||
|
|
||||||
Database migrations run automatically on startup.
|
Database migrations run automatically on startup.
|
||||||
|
|
||||||
|
### Configuration file
|
||||||
|
|
||||||
|
Copy `porchlight.example.toml` to `porchlight.toml` and edit to suit your
|
||||||
|
deployment. The file supports all the same settings as environment variables
|
||||||
|
(without the `OIDC_OP_` prefix), plus OIDC client registrations.
|
||||||
|
|
||||||
|
```toml
|
||||||
|
issuer = "https://auth.example.com"
|
||||||
|
session_secret = "your-random-secret"
|
||||||
|
|
||||||
|
[clients.my-webapp]
|
||||||
|
client_secret = "change-me-to-a-long-random-string"
|
||||||
|
redirect_uris = ["https://app.example.com/callback"]
|
||||||
|
response_types = ["code"]
|
||||||
|
scope = ["openid", "profile", "email"]
|
||||||
|
token_endpoint_auth_method = "client_secret_basic"
|
||||||
|
```
|
||||||
|
|
||||||
|
Each `[clients.<client-id>]` section registers an OIDC Relying Party on
|
||||||
|
startup. Only `client_secret` and `redirect_uris` are required; the other
|
||||||
|
fields have sensible defaults (`response_types = ["code"]`,
|
||||||
|
`scope = ["openid"]`, `token_endpoint_auth_method = "client_secret_basic"`).
|
||||||
|
|
||||||
|
To use a config file at a different path:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export OIDC_OP_CONFIG_FILE=/etc/porchlight/config.toml
|
||||||
|
```
|
||||||
|
|
||||||
|
If the config file does not exist, it is silently ignored and all settings
|
||||||
|
fall back to environment variables and defaults.
|
||||||
|
|
||||||
## Development Setup
|
## Development Setup
|
||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
|
||||||
23
porchlight.example.toml
Normal file
23
porchlight.example.toml
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Porchlight OIDC Provider Configuration
|
||||||
|
#
|
||||||
|
# Copy this file to porchlight.toml and edit to suit your deployment.
|
||||||
|
# Environment variables (OIDC_OP_*) override values set here.
|
||||||
|
# To use a different path: export OIDC_OP_CONFIG_FILE=/path/to/config.toml
|
||||||
|
|
||||||
|
issuer = "https://auth.example.com"
|
||||||
|
|
||||||
|
# debug = false
|
||||||
|
# session_secret = "generate-a-random-string-here"
|
||||||
|
# sqlite_path = "data/oidc_op.db"
|
||||||
|
# signing_key_path = "data/keys"
|
||||||
|
# invite_ttl = 86400
|
||||||
|
|
||||||
|
# Register OIDC Relying Party clients below.
|
||||||
|
# Each [clients.<client-id>] section defines one client.
|
||||||
|
|
||||||
|
# [clients.my-webapp]
|
||||||
|
# client_secret = "change-me-to-a-long-random-string"
|
||||||
|
# redirect_uris = ["https://app.example.com/callback"]
|
||||||
|
# response_types = ["code"]
|
||||||
|
# scope = ["openid", "profile", "email"]
|
||||||
|
# token_endpoint_auth_method = "client_secret_basic"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue