Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Authorizer v2 requires the following variables. Configure them in Render's envir
| -------- | ----------- | ------- |
| `DATABASE_TYPE` | Database type | `postgres` |
| `DATABASE_URL` | Database connection string | *(auto-configured by Render)* |
| `AUTHORIZER_URL` | This deployment's own public base URL **(required)**. Not the same as allowed origins — this is where Authorizer itself lives. The server exits at boot without it | `https://your-app.onrender.com` |
| `JWT_TYPE` | JWT signing algorithm | `HS256` |
| `JWT_SECRET` | JWT signing secret | `test` |
| `ENCRYPTION_KEY` | At-rest key for TOTP secrets and OTP digests. Required with `RS*`/`ES*` | *(output of `openssl rand -hex 32`)* |
Expand Down
18 changes: 13 additions & 5 deletions render.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,20 @@ services:
# it is a new internet-facing authenticated surface.
value: "false"
- key: AUTHORIZER_URL
# Canonical/trusted base URL of this deployment (e.g. your Render
# service URL). When set, it is the only source used to build
# REQUIRED — the server exits at boot without it, so the service will
# fail to start until this is set. Render prompts for it at blueprint
# deploy; if you skip the prompt, set it in the dashboard as soon as
# the service URL is known and redeploy.
#
# Canonical/trusted base URL of this deployment — your Render service
# URL, e.g. https://authorizer.onrender.com (include the scheme; a
# bare hostname is rejected). It is the only source used to build
# verification/reset/magic-link URLs, the JWT iss claim, and OIDC
# discovery URLs. Leaving it empty exposes host-header-injection
# account takeover (CWE-640) — set this in the Render dashboard
# once the service URL is known.
# discovery URLs; deriving them from request headers instead exposes
# host-header-injection account takeover (CWE-640).
#
# Not populated automatically: a blueprint cannot concatenate the
# scheme onto fromService.host, and the value must be a full URL.
sync: false
# ----------------------------------------------------------------
# April 2026 security hardening flags. See
Expand Down