Lumovi trusts the proxy’s headers completely. Anyone who can reach Lumovi without going through the proxy can name themselves anyone. Make sure nothing but the proxy can reach it.
Set it up
1
Put the proxy in front of Lumovi
Point your proxy at the
lumovi Service, port 80, and have it pass on who signed in, and their groups. The proxy must pass WebSockets through: each page keeps one open.With oauth2-proxy, --pass-user-headers sends the person’s email address in X-Forwarded-Email, and their groups in X-Forwarded-Groups.If the proxy sends Lumovi a different Host header than the address people open (the Service’s name, say), also set url to that address. Lumovi accepts pages’ connections only from its own origin, and url tells it which that is. See Security.2
Configure Lumovi, and keep everything else out
values.yaml
podSelector on its own matches pods in Lumovi’s namespace, so this works when the proxy runs there too; for a proxy in another namespace, see below. Your cluster’s network plugin has to enforce network policies for it to work. Leave the chart’s ingress off: your ingress sends people to the proxy, and the proxy sends them on to Lumovi.3
Give people roles
Bind roles to the names the proxy sends, with the prefixes you chose:
A proxy in another namespace
When the proxy runs in a namespace of its own, name that namespace and the proxy’s pods in the same entry offrom. Kubernetes labels every namespace with its name, in kubernetes.io/metadata.name:
values.yaml
- before each), either would do, so every pod in the proxy’s namespace could reach Lumovi.
The headers
string
default:"X-Forwarded-User"
The request header that names the person. A request without it gets a page that says Lumovi doesn’t know who you are, and asks people to have whoever runs Lumovi check the proxy.
string
default:"X-Forwarded-Groups"
The request header that lists their groups, separated by commas.
string
Where signing out of the proxy is, like
https://lumovi.example.com/oauth2/sign_out. Lumovi has no session of its own behind a proxy, so signing out means signing out of the proxy.system:…), whatever the proxy says. It leaves out groups whose names start with system:, and refuses a user whose name does.
What it means for the cluster
Behind a proxy, Lumovi impersonates people, so the chart gives its service account permission to impersonate users and groups, cluster-wide. Whoever can reach Lumovi’s pod, or read its service account’s token, can act as anyone. Keep Lumovi in a namespace only cluster administrators can exec into. See Security. There are no Lumovi sessions behind a proxy: it reads the headers on every request. Restarting Lumovi doesn’t sign anyone out, and how long people stay signed in is up to the proxy.Security
Hardening Lumovi when it impersonates people.
Single sign-on
Or let Lumovi talk to your provider directly.