Sign out through the proxy when the proxy signed you in
Sign out cleared ipx's cookies and showed its password page, while Cloudflare Access still vouched for the person: nothing was signed out, and the page looked like the wrong login. /api/me now says, for someone the proxy signed in, where to go instead ([web] sign_out_url, which is /cdn-cgi/access/logout behind Access), and /login sends anyone the proxy vouches for on to their feeds. The header check both use is one function. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TAC7sLVqfKmY6rsTLXzNgk
This commit is contained in:
@@ -67,6 +67,7 @@ token = "" # generated and saved on first run
|
||||
trusted_header = "" # e.g. "Cf-Access-Authenticated-User-Email"
|
||||
trusted_proxies = ["127.0.0.1", "::1"]
|
||||
auto_create_users = true
|
||||
sign_out_url = "" # e.g. "/cdn-cgi/access/logout"
|
||||
session_days = 30
|
||||
```
|
||||
|
||||
@@ -77,6 +78,9 @@ session_days = 30
|
||||
* **`trusted_proxies`** — addresses allowed to assert that header, and the entire security boundary
|
||||
for it. Name the proxy, never a subnet.
|
||||
* **`auto_create_users`** — create an account the first time the proxy vouches for a new name.
|
||||
* **`sign_out_url`** — where Sign out sends someone the proxy signed in: the proxy's own sign-out,
|
||||
`/cdn-cgi/access/logout` behind Cloudflare Access. Empty sends them to the sign-in page, where
|
||||
the proxy signs them straight back in.
|
||||
* **`session_days`** — sign a session out after this long without a request.
|
||||
|
||||
It is plain HTTP. On a LAN bind everything crosses the network in the clear — and a feed URL can
|
||||
|
||||
@@ -47,6 +47,14 @@ Every change, in order, with how to undo it:
|
||||
iPodderX icon, and a link to `https://ipodderx.sdf1.net`. It changes nothing about who can sign
|
||||
in. Undo: delete it under Applications → Applications, or
|
||||
`DELETE /api/v3/core/applications/ipodderx/`.
|
||||
6. **Signing out**, later again. Sign out landed on ipx's password page while Access still vouched
|
||||
for Ray, so it signed nothing out, and the page looked like the wrong login. Cloudflare's
|
||||
`/cdn-cgi/access/logout` ends the Access session for every Access application at once (there is
|
||||
no per-application sign-out, and it takes no redirect), and Authentik's end-session only ends
|
||||
one application's session unless single logout is set up there. Ray chose Access's sign-out. New
|
||||
`[web] sign_out_url`, set to `/cdn-cgi/access/logout` in production (the file as it was is
|
||||
`config.toml.2026-09-12-signout.bak`), and `/login` now sends anyone the proxy vouches for on to
|
||||
`/`. Undo: take the key out and restart; the code does nothing without it.
|
||||
|
||||
What the address trusts is any container on Tower that connects through the host's port, not only
|
||||
`cloudflared`. Verifying Cloudflare's signed `Cf-Access-Jwt-Assertion` would remove that, and is
|
||||
|
||||
13
docs/sso.md
13
docs/sso.md
@@ -40,6 +40,7 @@ bind = "0.0.0.0:8099"
|
||||
trusted_header = "Cf-Access-Authenticated-User-Email"
|
||||
trusted_proxies = ["127.0.0.1", "::1", "192.168.16.1"]
|
||||
auto_create_users = true
|
||||
sign_out_url = "/cdn-cgi/access/logout"
|
||||
session_days = 30
|
||||
```
|
||||
|
||||
@@ -89,6 +90,17 @@ send:
|
||||
docker exec iPodderX ipx user rename <old name> <email address>
|
||||
```
|
||||
|
||||
### Signing out
|
||||
|
||||
**Sign out** sends someone the proxy signed in to `sign_out_url`, here Cloudflare's
|
||||
`/cdn-cgi/access/logout`. That ends your Access session for **every** Access application,
|
||||
`code.sdf1.net` included: Cloudflare has no way to end just one, and its sign-out page does not send
|
||||
you anywhere afterwards. The next visit goes back through Authentik, which lets you straight in if
|
||||
you are still signed in there. Signing out of Authentik itself is Authentik's own sign-out.
|
||||
|
||||
ipx never shows its password page to someone the proxy vouches for: `/login` sends them on to their
|
||||
feeds.
|
||||
|
||||
### The tile in Authentik's library
|
||||
|
||||
Authentik's library lists Authentik's own applications, and ipodderx signs in through the one
|
||||
@@ -122,6 +134,7 @@ ipx should show `rays@sdf1.net` in the sidebar footer without asking for a passw
|
||||
| `trusted_header` | The header the proxy sets. Empty, the default, turns the proxy path off. |
|
||||
| `trusted_proxies` | The addresses allowed to set it. Nothing else is believed. |
|
||||
| `auto_create_users` | Make an account the first time the proxy vouches for a name ipx has not seen. |
|
||||
| `sign_out_url` | Where Sign out sends someone the proxy signed in: the proxy's own sign-out. Empty sends them to the sign-in page, where the proxy signs them straight back in. |
|
||||
| `session_days` | How long a password sign-in lasts without use. |
|
||||
|
||||
The first account ever created is an admin. Every later one is an ordinary user, who cannot change
|
||||
|
||||
Reference in New Issue
Block a user