Files
member-console/internal/embeds/mc-config.yaml
T
cgalo5758 0b28a9dc29 Remediate security audit findings
- Replace gorilla/csrf with net/http CrossOriginProtection
- Require valkey-password and add TLS options for session store
- End session at /logout and revoke refresh tokens
- Re-derive identity and roles from provider every five minutes
- Process each Stripe webhook event in its own Temporal workflow
- Give each outbox entry its own workflow with Temporal retries
- Guard against stale Stripe events with provider timestamps
- Derive transport security from base-url scheme
2026-09-09 13:25:43 -05:00

63 lines
2.8 KiB
YAML

# member-console starter configuration (written by `member-console init`).
#
# Fill in the values for your deployment, then run `member-console start`.
# Startup validates this file and reports anything required that is missing or
# malformed. Any value can also be supplied via an MC_-prefixed environment
# variable (e.g. MC_DB_DSN) or, for secrets, a "<key>-file" variant that reads the
# value from a file path.
# --- Required ---
# Public URL this console is served at (used for OAuth redirect and CSRF origin).
# The scheme decides transport security: https sets the session cookie's Secure
# flag and the CSP upgrade-insecure-requests directive; http, for local plain-HTTP
# work, sets neither.
base-url: "https://console.example.com"
port: "8080"
# PostgreSQL connection string.
db-dsn: "postgres://user:password@localhost:5432/member_console?sslmode=disable"
# Valkey/Redis address for the server-side session store.
valkey-addr: "localhost:6379"
# Session-store credentials and transport.
# Sessions are credentials: they carry the person, organization and workspace
# ids that authorization is decided from, so anyone who can reach this store
# unauthenticated can read and forge them. A password is REQUIRED; startup
# fails without one. TLS stays optional because it needs certificates.
valkey-password: "" # required; or valkey-password-file, never both
#valkey-username: "" # ACL user, if the store uses one
#valkey-tls: false # connect over TLS
#valkey-tls-skip-verify: false # self-signed stores only; disables certificate checks
# OIDC identity provider. Point at a dedicated application realm — not an
# administration realm (e.g. Keycloak's `master`), whose account console is not a
# supported end-user surface.
oidc-idp-issuer-url: "https://idp.example.com/realms/your-realm"
oidc-sp-client-id: "member-console"
# Client secret for a confidential client; leave empty for a public (PKCE) client.
oidc-sp-client-secret: ""
# Environment label. "development" selects text logs; anything else selects JSON.
# The session cookie's Secure flag and the CSP upgrade directive follow
# base-url's scheme above, not this value.
env: "production"
# --- Optional: Temporal (durable workflows). Leave temporal-host empty to disable. ---
temporal-host: ""
temporal-namespace: "default"
# If your Temporal server authenticates via OIDC, set all three together (or none).
temporal-oauth-token-url: ""
temporal-oauth-client-id: ""
temporal-oauth-client-secret: ""
temporal-oauth-scopes: []
# --- Optional ---
# URL shown to users in error messages for getting help.
support-url: ""
# Integration sections (Stripe, FedWiki, Discourse, ...) follow below when this
# file is written by `member-console init`: one commented section per installed
# integration, generated from its declared configuration.