Operational Processes
This page references several operational processes for OpenUnison.
Force User Logouts / End Sessions
There are situations where a user's session must be terminated immediately. Depending on OpenUnison's configuration, there are two ways to do this when working with Kubernetes. You can manually delete the user's OpenID Connect sessions to keep them from refreshing their tokens and create an EndSession
object to force a user logout from web sessions.
Kubernetes Login Portal
Using the login portal to end a user's sessions quickly is done manually via either kubectl or directly using the Kubernetes API.
Ending OpenID Connect Sessions
OpenUnison uses very short lived tokens, between 1-2 minutes depending on your clock skew, requiring your client or kubectl
to constantly refresh. This entails sending a refresh token to OpenUnison to request a new id_token
and refresh_token
. OpenUnison stores this information, encrypted, as CRDs in your cluster. You can delete these CRDs, meaning that the next time your client tries to refresh the id_token
, the process will fail and the user will no longer be able to interact with your cluster.
Step | Explanation | Example |
---|---|---|
Determine the user DN to delete | Each user that's authenticated to OpenUnison has a Distinguished Name (DN) that identifies the user inside of the internal LDAP virtual directory. This DN will take the form uid=user,ou=shadow,o=Tremolo for the login portal, You can find the exact DN by looking in the OpenUnison access logs. The DN is in every AzLog line. |
uid=mmosley,ou=shadow,o=Tremolo |
Generate a sha1 hash of the DN | OpenUnison stores a SHA1 hash of the user's DN as a label on each session object to make it easier to delete. | echo -n 'uid=mmosley,ou=shadow,o=Tremolo' | sha1sum generates 5204c08a79c11dbdc2fdda1e07bc866fb4f22888 - |
Delete all instances of the oidc-session object with the sha1 label |
You can delete the sessions using kubectl |
k delete oidc-sessions -l tremolo.io/user-dn=5204c08a79c11dbdc2fdda1e07bc866fb4f22888 -n openunison |
Once the oidc-session
objects are deleted, sessions will end once tokens expire.
Ending Web Sessions
Prior to 1.0.43, killing the oidc-sessions
was enough to also end portal and dashboard sessions. However, with the desire to have more web accessible tools, we separated this by default in 1.0.43. To kill a user's web session in 1.0.43+, you need to create a special object called EndSession
with the user's DN. For instance, the below object:
kind: EndSession
apiVersion: openunison.tremolo.io/v1
metadata:
name: kill-mmosley
namespace: openunison
spec:
dn: uid=mmosley,ou=shadow,o=Tremolo
Will delete the user mmosley
. The DN will be the same as what was used to generate the sha1sum when deleting OIDC sessions. You don't need to worry about deleting this object, OpenUnison will delete it after about a minute.
Namespace as a Service (NaaS) Portal
If you've deployed the NaaS portal, you can delete user's sessions quickly from the portal using the End sessions workflow.
Upgrading Satellite Clusters
When using OpenUnison, either as an SSO portal or using NaaS, with a control plane/satellite model there are two ways to upgrade an integrated satellite:
- Re-run
ouctl install-satelite
to completely upgrade both the satellite's OpenUnison AND the integration with the control plane - Manually upgrade the control plane integration
Each control plane has a helm chart deployment that corresponds to each satellite. For instance, if you run helm list -n openunison
on your control plane, you'll see something very similar to:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
cluster-management openunison 73 2025-07-28 14:17:35.930717 -0400 EDT deployed openunison-k8s-cluster-management-3.0.56 1.0.42
openunison openunison 117 2025-07-28 14:16:25.645271 -0400 EDT deployed openunison-operator-3.0.16 1.0.42
openunison-privileged-access openunison 28 2025-07-28 14:17:46.858205 -0400 EDT deployed openunison-privileged-access-1.0.1 1.0.42
orchestra openunison 112 2025-07-28 14:16:27.081721 -0400 EDT deployed orchestra-3.1.15 1.0.42
orchestra-login-portal openunison 38 2025-07-28 14:17:33.39816 -0400 EDT deployed orchestra-login-portal-2.3.69 1.0.42
satellite-XXXX-legacy-1 openunison 5 2025-04-30 19:48:31.328533193 +0000 UTC deployed openunison-k8s-add-cluster-1.0.11 1.0.42
satellite-XXXX-legacy-2 openunison 6 2025-05-01 12:27:41.211731231 +0000 UTC deployed openunison-k8s-add-cluster-1.0.11 1.0.42
satellite-XXXX-legacy-3x openunison 10 2025-07-23 18:12:59.675713458 +0000 UTC deployed openunison-k8s-add-cluster-1.0.11 1.0.42
satellite-XXXX-legacy-4 openunison 15 2025-05-01 12:41:33.704882516 +0000 UTC deployed openunison-k8s-add-cluster-1.0.11 1.0.42
satellite-XXXX-legacy-5 openunison 5 2025-05-01 12:45:52.793441525 +0000 UTC deployed openunison-k8s-add-cluster-1.0.11 1.0.42
satellite-sat-10 openunison 21 2025-07-23 14:15:11.837078 -0400 EDT deployed openunison-k8s-add-cluster-1.0.12 1.0.42
satellite-sat5 openunison 1 2024-07-24 17:51:53.671426764 +0000 UTC deployed openunison-k8s-add-cluster-1.0.8 1.0.40
satellite-sat6 openunison 1 2024-10-28 12:29:57.470035386 +0000 UTC deployed openunison-k8s-add-cluster-1.0.9 1.0.41
you can see there are a number of satellite clusters that have been integrated. If you don't want to re-run a full integration, but just want to update the control plane integration to get the latest version of a chart, update permissions, enable a new feature that doesn't require a full re-deployment of a satellite, etc, then you can instead just re-deploy the helm chart.
When you run ouctl install-satelite
, it will generate a client values.yaml that is used for the openunison-k8s-add-cluster
chart that is deployed. If you haven't stored that values file, you can get it directly using helm. For instance, if we're going to update satellite-sat-10
:
$ helm get values satellite-sat-10 -n openunison
USER-SUPPLIED VALUES:
cluster:
additional_badges:
- description: Kiali
icon: iVBORw0KGgoAAA...
name: kiali
url: https://ou.192-168-2-10.nip.io/kiali
az_groups:
- k8s-namespace-administrators-k8s-sat-10-*
.
.
.
The output of this command can be piped to a file, edited, and then used as the values for a helm command. For instance:
$ helm get values satellite-sat-10 -n openunison > /path/to/values.yaml
.
.
make your edits
.
.
$ helm upgrade satellite-sat-10 oci://harbor.domain.internal/mycharts/openunison-k8s-add-cluster --version=1.0.14 -n openunison -f /path/to/values.yaml
Assuming the helm upgrade
is successful, OpenUnison will pick up the changes without needing to restart OpenUnison.